我正在使用 TensorFlow 来了解卷积自动编码器。我已经实现了一个简单的单层自动编码器,它可以做到这一点:
输入(尺寸:95x95x1)---> 编码(使用 32 个 5x5 滤波器进行卷积)---> 潜在表示(尺寸:95x95x1x32)---> 解码(使用绑定权重)---> 重构输入(尺寸:95x95x1)
输入是黑白边缘图像,即对 RGB 图像进行边缘检测的结果。
我随机初始化过滤器,然后训练模型以最小化损失,其中损失定义为输入和重构输入的均方误差。
loss = 0.5*(tf.reduce_mean(tf.square(tf.sub(x,x_reconstructed))))
经过 1000 步训练后,我的损失收敛,网络能够很好地重建图像。但是,当我将学习到的过滤器可视化时,它们看起来与随机初始化的过滤器并没有太大区别!但是过滤器的值会随着训练步骤的不同而变化。
我本来期望至少水平和垂直边缘过滤器。或者,如果我的网络正在学习“身份过滤器”,我会期望过滤器都是白色的吗?
有人对此有任何想法吗?或者对我可以做些什么来分析正在发生的事情有什么建议吗?我应该在解码之前包括池化和去池化层吗?
谢谢!
P/S:我在 RGB 图像上尝试了相同的模型,过滤器再次看起来是随机的(就像随机的颜色斑点)。