Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 卷积自动编码器没有学习有意义的滤波器_Neural Network_Tensorflow_Conv Neural Network_Autoencoder - Fatal编程技术网

Neural network 卷积自动编码器没有学习有意义的滤波器

Neural network 卷积自动编码器没有学习有意义的滤波器,neural-network,tensorflow,conv-neural-network,autoencoder,Neural Network,Tensorflow,Conv Neural Network,Autoencoder,我正在玩TensorFlow来理解卷积自动编码器。我已经实现了一个简单的单层自动编码器,它可以: 输入(维度:95x95x1)--->编码(与32个5x5滤波器的卷积)--->潜在表示(维度:95x95x1x32)--->解码(使用绑定权重)--->重构输入(维度:95x95x1) 输入为黑白边缘图像,即RGB图像的边缘检测结果 我随机初始化滤波器,然后训练模型以最小化损失,其中损失定义为输入和重构输入的均方误差 loss = 0.5*(tf.reduce_mean(tf.square(tf.s

我正在玩TensorFlow来理解卷积自动编码器。我已经实现了一个简单的单层自动编码器,它可以:

输入(维度:95x95x1)--->编码(与32个5x5滤波器的卷积)--->潜在表示(维度:95x95x1x32)--->解码(使用绑定权重)--->重构输入(维度:95x95x1)

输入为黑白边缘图像,即RGB图像的边缘检测结果

我随机初始化滤波器,然后训练模型以最小化损失,其中损失定义为输入和重构输入的均方误差

loss = 0.5*(tf.reduce_mean(tf.square(tf.sub(x,x_reconstructed))))
经过1000步的训练,我的损失收敛,网络能够很好地重建图像。然而,当我可视化学习过的过滤器时,它们看起来与随机初始化的过滤器没有太大区别!但滤波器的值会随着训练步骤的不同而变化

我希望至少有水平和垂直边缘过滤器。或者,如果我的网络正在学习“身份过滤器”,我会期望过滤器都是白色的或其他什么

有人知道这件事吗?或者,对于我能做些什么来分析正在发生的事情,有什么建议吗?在解码之前我应该包括池和去池层吗

谢谢大家!


p/S:我在RGB图像上尝试了相同的模型,但过滤器看起来又是随机的(就像随机的颜色斑点)。

你需要正则化,你有吗?@YaroslavBulatov没有,我现在没有使用正则化。为了确认我的理解是否正确,我应该在我的损失函数中添加正则化项,这样“大”的权重值就会受到惩罚
loss=0.5*(tf.reduce\u mean(tf.square(tf.sub(x,x\u重构)))+lambda*(tf.reduce\u mean(W\u conv1))
其中lambda=正则化项,W\u conv1=编码权重矩阵感谢您的帮助!你可以得到边缘过滤器,如果你添加稀疏惩罚,我们可以看到完整的代码吗?