Hi,I want to here add I want to add more input to hybrid_forward…
Code:
class UNet(nn.HybridBlock):
def init(self,in_channels,out_classes):
super(UNet,self).init()
with self.name_scope():
self.inc=nn.HybridSequential(prefix=’’)
self.down1=nn.HybridSequential(prefix=’’)
self.down2=nn.HybridSequential(prefix=’’)
self.down3=nn.HybridSequential(prefix=’’)
self.down4=nn.HybridSequential(prefix=’’)
self.up1=nn.HybridSequential(prefix=’’)
self.up2=nn.HybridSequential(prefix=’’)
self.up3=nn.HybridSequential(prefix=’’)
self.up4=nn.HybridSequential(prefix=’’)
self.out=nn.HybridSequential(prefix=’’)
#开始输入层模块
self.inc.add(InConv(in_channels=in_channels,out_channels=8))
#向下提取特征层 即下采样
self.down1.add(DownPool(in_channels=8,out_channels=16))
self.down2.add(DownPool(in_channels=16,out_channels=32))
self.down3.add(DownPool(in_channels=32,out_channels=64))
self.down4.add(DownPool(in_channels=64,out_channels=128))
#下采样最后输出的是1024
#上采样
self.up1.add(UpConv(in_channels=128))
self.up2.add(UpConv(in_channels=64))
self.up3.add(UpConv(in_channels=32))
self.up4.add(UpConv(in_channels=16))
#上采样最后的输出的是64
#最后输出层模块
self.out.add(OutConv(out_classes=out_classes))
def hybrid_forward(self,F,x):
#按照U-Net顺序组合起来
x1=self.inc(x)
x2=self.down1(x1)
x3=self.down2(x2)
x4=self.down3(x3)
x5=self.down4(x4)
x=self.up1(x5,x4)
x=self.up2(x,x3)
x=self.up3(x,x2)
x=self.up4(x,x1)
return self.out(x)
#向上采样层 反卷积
class UpConv(nn.HybridBlock):
def init(self,in_channels):
super(UpConv,self).init()
with self.name_scope():
self.up_conv=nn.HybridSequential(prefix=’’)
self.conv=nn.HybridSequential(prefix=’’)
#添加转置卷积 即反卷积 向上采样
self.up_conv.add(nn.Conv2DTranspose(channels=in_channels//2,kernel_size=30,strides=2, padding=14))
self.conv.add(DoubleConv(in_channels//2,in_channels//2))
def hybrid_forward(self,F,x,y):
out = []
for block in self._children.values():
#上采样放大
x=self.up_conv(x)
out.append(block(x, y))
return self.conv(nd.concat(*out,dim=1))
I am sorry to report this error.
Could you tell me how to solve this problem? Thanks