为什么我的机器学习图像如此混乱?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的机器学习图像如此混乱?相关的知识,希望对你有一定的参考价值。
我正在用Keras进行机器学习,我的神经网络输出图像。
我的数据是标准化的,所以我取出网络的输出并取消规范化它们,然后使用Image.fromarray
将它们转换为PIL图像,然后显示这些图像。
要么
什么时候应该看起来像
我的损失会降到相当低的数字,当我查看网络的输出值时,它们看起来相当正常。
为什么这些图像显得那么混乱?我该怎么办才能修复它?
答案
问题是您的网络输出不完全在[0,255]范围内。
即使您在网络的最后一层使用sigmoid
函数(这将保证您的输出在范围(0,1)),当您“平均”图像时,您可能会以某种方式操纵它们在上方或下方[0,255]范围。
这通常与您对图像进行平均的方式有关。在我的情况下,我认为这是因为当我平均我的图像时,在零除以的情况下我有一个小的epsilon。不平衡时,这会导致值超出[0,255]范围的问题。
解决方案是在将数组转换为PIL图像之前强制数组进入[0,255]范围。
我这样做:
image_array = np.minimum(image_array, np.full(image_array.shape, 255))
image_array = np.maximum(image_array, np.full(image_array.shape, 0))
这对于数组进行两次元素比较,如果它们超过255则将值设置为255,如果它们低于0则设置为0。
然后,您可以使用生成的image_array
并将其转换为与您一直在进行的Image.fromarray(image_array)
的PIL图像。
你得到的图像应该看起来更像你在问题中发布的好图像。 (事实上,在你的情况下,它应该看起来像你发布的那个好的形象;))
以上是关于为什么我的机器学习图像如此混乱?的主要内容,如果未能解决你的问题,请参考以下文章