Python 神经网络图像处理

Python 神经网络图像处理,python,image-processing,neural-network,artificial-intelligence,pybrain,Python,Image Processing,Neural Network,Artificial Intelligence,Pybrain,我正在开发一个用于神经网络图像处理的python应用程序 我给什么样的图像应该看起来像处理后的数据集 现在我在训练集中有50张宇宙的图片。 作为输入,我给出了空白的黑色图像,因此我给出了我的每个训练集图像 我用5个隐藏神经元进行了100次历代训练;然而,当我尝试用不同的输入激活我的网络时,我得到了相同的结果。似乎输出仅由相互分层的训练集图像组成 以下是上次激活的代码和屏幕截图: PS:如果仍然不清楚问题是什么(我因为不清楚而受到警告),我不想得到同样的结果。问题是如何让它工作。如果你给黑色图

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

我给什么样的图像应该看起来像处理后的数据集 现在我在训练集中有50张宇宙的图片。 作为输入,我给出了空白的黑色图像,因此我给出了我的每个训练集图像

我用5个隐藏神经元进行了100次历代训练;然而,当我尝试用不同的输入激活我的网络时,我得到了相同的结果。似乎输出仅由相互分层的训练集图像组成

以下是上次激活的代码和屏幕截图:


PS:如果仍然不清楚问题是什么(我因为不清楚而受到警告),我不想得到同样的结果。问题是如何让它工作。

如果你给黑色图像作为输入,那意味着你给的图像只包含0,所以是一个0的数组

因此,无论层的数量或类型如何,在训练期间,输出将始终为0(无论值乘以0是0)。唯一使输出不能为0的是,如果在每个层中使用偏移。偏差就是这个小常数加在每个神经元的输入上。所以在你的例子中,我认为输出总是一样的,因为你的神经网络收敛到只使用你层中的偏差。白色图像或更好的原始(原始)图像会更好

顺便问一下,你的NN架构是什么?它包含多少重量

作为输入,我给出了空白的黑色图像,因此我给出了我的每个训练集图像

事实上,您将空白的黑色图像作为输入,而结果作为处理后的图像是完全错误的。您正在告诉神经网络(NN)生成一个结果,该结果与测试图像非常接近。NN是聪明的,但不是魔法

因此,尽管您进行了所有的训练,NN只是忽略了数据(或者因为训练中的输入是一个只有0的数组,所以它的重要性很低),并生成了一个覆盖图像。为了确认,请查看每个层的聚合权重和偏差


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

好的,我正在尝试找出NN上下文中的偏差以及如何使用它。我尝试了非黑色图像。没有效果。我已经编辑了我的答案。顺便说一句,我不知道你的问题为什么被否决了,别在意。我现在不知道权重是多少,正在研究它。同时,我添加了非黑色图像作为输入,为网络添加了bias=True属性,现在用10个隐藏层和100个纪元对其进行训练。需要时间。当我问你的NN架构时,它的意思是:层的数量和类型、激活函数和权重的数量。训练a NN意味着估计每个权重的最佳值。
net=buildNetwork(921600,10921600,bias=True)
我用它来构建网络。921600是像素数。10是隐藏神经元的数量。因此,如果我使用一个相同的原始图像作为输入,并作为输出集,使用期望的过滤器处理该原始图像的版本,它会更有意义吗?不。NN是一个线性系统,响应不同的输入。相同的图像意味着相同的输入。线性系统不可能以不同的方式响应相同的输入。它就像一个函数<代码>f(x)在x处不能有2个或更多不同的值。对于50幅图像中的每一幅,在训练时使用原始图像作为输入,并使用相应的处理图像作为神经网络的结果。这很有意义。当我开始把它看作一个函数和近似时,我就理解了它。谢谢你的回答。“神经网络是一个线性系统”,当你使用像sigmoid或tanh这样的非线性激活函数时,这是不正确的。对不起,我错了。意思是内射函数,不是线性函数。
f(x)
上的例子肯定不会犯这样的错误。更正:NN是一个内射(一对一)系统,响应不同的输入。你不可能让它以不同的方式响应相同的输入。