神经网络图像处理

Neural Network image processing

我正在开发一个 python 神经网络图像处理应用程序

我正在提供处理后图像应该是什么样子的数据集 现在我在训练集中有 50 张宇宙图像。 作为输入,我给出了空白的黑色图像,结果我给出了我的每个训练集图像。

我用 5 个隐藏神经元进行了 100 个 epoch 训练;然而,当我尝试用不同的输入激活我的网络时,我得到了相同的结果。似乎输出仅包含彼此分层的训练集图像。

这是上次激活的代码和屏幕截图: https://gist.github.com/anonymous/6e0e125bddcbb594c1a79c3a28d5d8af

PS:如果仍然不清楚问题是什么(我因为不清楚而收到警告),显然我不想得到相同的结果。问题是如何让它发挥作用。

如果您将黑色图像作为输入,这意味着您给出的图像仅包含 0,因此是一个 0 的数组。

因此无论层数或层的类型如何,在训练期间输出将始终为 0(任何值乘以 0 都为 0)。唯一使您的输出不能为 0 的是,如果您在每一层中使用偏差。偏差是添加到每个神经元输入的这个小常数。所以在你的情况下,我认为输出总是相同的,因为你的 NN 收敛到只使用你层中的偏差。白色图像,或者更好的原始(原始)图像会更好。

顺便说一句,你的神经网络架构是什么?它包含多少重量?

As an input I give blank black image, as a result I give each of my training set images.

您将空白的黑色图像作为输入,而结果作为处理后的图像,这一事实显然是错误的。您告诉神经网络 (NN) 从无到有地生成一个与您的测试图像接近的结果。 NN很聪明,但不是魔法。

因此,尽管您进行了所有训练,但神经网络只是忽略了数据(或者赋予它非常低的重要性,因为训练中的输入是一个仅包含 0 的数组)并生成叠加图像。为了确认,请查看每一层的收敛权重和偏差。

解决方法很简单。不要使用空白图像作为输入,而是使用原始图像作为输入,并将其处理后的图像作为输出。