Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Image processing Tensorflow:我的损失函数产生了巨大的数字_Image Processing_Tensorflow_Neural Network_Deep Learning_Autoencoder - Fatal编程技术网

Image processing Tensorflow:我的损失函数产生了巨大的数字

Image processing Tensorflow:我的损失函数产生了巨大的数字,image-processing,tensorflow,neural-network,deep-learning,autoencoder,Image Processing,Tensorflow,Neural Network,Deep Learning,Autoencoder,我正在尝试使用神经网络进行图像修复,使用去噪自动编码器对权重进行预训练。照 我制作了他们正在使用的自定义损耗函数 我的集合是一幅图像的一批重叠面片196x32x32。我的输入是图像的损坏批次,输出应该是已清理的批次 我的损失函数的一部分是 dif_y = tf.subtract(y_xi,y_) dif_norm = tf.norm(dif_y, ord = 'euclidean', axis = (1,2)) 其中y_xi196 x 1 x 3072是重建的干净图像,y_196 x 1 x

我正在尝试使用神经网络进行图像修复,使用去噪自动编码器对权重进行预训练。照

我制作了他们正在使用的自定义损耗函数

我的集合是一幅图像的一批重叠面片196x32x32。我的输入是图像的损坏批次,输出应该是已清理的批次

我的损失函数的一部分是

dif_y = tf.subtract(y_xi,y_)

dif_norm = tf.norm(dif_y, ord = 'euclidean', axis = (1,2))
其中y_xi196 x 1 x 3072是重建的干净图像,y_196 x 1 x 3072是真实的干净图像。所以我实际上从它们的损坏版本中减去所有的图像,然后把所有的差异加起来。我认为一个很大的数字是正常的

train_step = tf.train.AdamOptimizer().minimize(loss)
损耗值开始于3*10^7左右,并在200次运行后以闭合值收敛于1000次循环。因此,我的输出图像将远离原始图像数英里

编辑:从3.02391e+07开始,收敛到3.02337e+07

我的损失值是否正确?如果是这样的话,我怎样才能大大减少它

谢谢

编辑2:我的损失函数

dif_y = tf.subtract(y,y_)
dif_norm = tf.norm(dif_y, ord = 'euclidean', axis = (1,2))
sqr_norm = tf.square(dif_norm)
prod = tf.multiply(sqr_norm,0.5)
sum_norm2 = tf.reduce_sum(prod,0)
error_1 = tf.divide(sum_norm2,196)
sum_norm2=tf.reduce_sumprod,0-我不认为这是你想要它做的

假设y和y_500个图像有值,500x10矩阵有10个标签。当tf.reduce_sumprod时,0处理您将有1个值,每个值是500个值的总和,这将是第二级中所有值的总和

我不认为这是你想要的,每个标签上的错误总和。也许你想要的是平均水平,至少在我的经验中,这对我来说是个奇迹。此外,我不希望有一大堆损失,每个图像一个,而是一批损失

我的偏好是使用

loss = tf.reduce_mean ( tf.reduce_mean( prod ) )
这会使优化器参数变得简单。我还没有遇到过这样的情况,我必须使用1.0以外的任何东西作为GradientDescent、Adam或MomentumOptimizer的学习率


现在,您的丢失将与批次大小或标签数量无关。

如果其他人有类似问题,请记录:记住规范化数据!我实际上是从[0255]范围内的值中减去[0,1]范围内的值。非常愚蠢的错误,我通过艰苦的方式学会了

输入值/255

期望值/255


问题已解决。

如此高的损耗意味着网络无法适应您的数据/任务,一个不同的体系结构,即更深层次的体系结构可能会有所帮助。您能否提供代码行以计算损耗。@wontonimo我添加了我测试中的代码行,我相信问题在于dif_norm=tf.norm。即使当我运行一个小得多的批次15张图像而不是196张图像时,损失仍然保持不变,并且dif_标准值不变。我同意这样的想法,我希望损失的是整个批次,而不是批次的每个图像。现在,我用批次大小196除以平均损失,但我一定会用tf.reduce_平均值试试。这是有道理的。此外,你认为我必须设置我的学习速度,而不是让Adam来决定吗?我会首先使用Adam的默认值。事实上,我会首先使用动量作为基线如果有人读了上面关于Momentum vs Adam的评论,想让我们了解更多,这里有一个很好的链接,基本上说,试试Adam,因为它很棒。