怎么把Chainer code转换成Keras? -UNet

问题描述

我用Chainer编写了这段代码,我想迁移到Keras。

class UNet(Chain):
    def __init__(self):
        super(UNet,self).__init__()
        with self.init_scope():
            self.conv1 = L.Convolution2D(1,16,4,2,1)
            self.norm1 = L.Batchnormalization(16)
            self.conv2 = L.Convolution2D(16,32,1)
            self.norm2 = L.Batchnormalization(32)
            self.conv3 = L.Convolution2D(32,64,1)
            self.norm3 = L.Batchnormalization(64)
            self.conv4 = L.Convolution2D(64,128,1)
            self.norm4 = L.Batchnormalization(128)
            self.conv5 = L.Convolution2D(128,256,1)
            self.norm5 = L.Batchnormalization(256)
            self.conv6 = L.Convolution2D(256,512,1)
            self.norm6 = L.Batchnormalization(512)
            self.deconv1 = L.Deconvolution2D(512,1)
            self.denorm1 = L.Batchnormalization(256)
            self.deconv2 = L.Deconvolution2D(512,1)
            self.denorm2 = L.Batchnormalization(128)
            self.deconv3 = L.Deconvolution2D(256,1)
            self.denorm3 = L.Batchnormalization(64)
            self.deconv4 = L.Deconvolution2D(128,1)
            self.denorm4 = L.Batchnormalization(32)
            self.deconv5 = L.Deconvolution2D(64,1)
            self.denorm5 = L.Batchnormalization(16)
            self.deconv6 = L.Deconvolution2D(32,1,1)

    def __call__(self,X):
        h1 = F.leaky_relu(self.norm1(self.conv1(X)))
        h2 = F.leaky_relu(self.norm2(self.conv2(h1)))
        h3 = F.leaky_relu(self.norm3(self.conv3(h2)))
        h4 = F.leaky_relu(self.norm4(self.conv4(h3)))
        h5 = F.leaky_relu(self.norm5(self.conv5(h4)))
        h6 = F.leaky_relu(self.norm6(self.conv6(h5)))
        dh = F.relu(F.dropout(self.denorm1(self.deconv1(h6))))
        dh = F.relu(F.dropout(self.denorm2(self.deconv2(F.concat((dh,h5))))))
        dh = F.relu(F.dropout(self.denorm3(self.deconv3(F.concat((dh,h4))))))
        dh = F.relu(self.denorm4(self.deconv4(F.concat((dh,h3)))))
        dh = F.relu(self.denorm5(self.deconv5(F.concat((dh,h2)))))
        dh = F.sigmoid(self.deconv6(F.concat((dh,h1))))
        return dh

我正在实现用于图像转换的Unet体系结构,但是,我正在用于音乐源分离。 我不知道将输入通道和输出放在keras conv2d方法中。

预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)