【问题标题】:Neural Network image processing [closed]神经网络图像处理
【发布时间】:2016-11-29 09:17:20
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python image-processing neural-network artificial-intelligence pybrain


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,我正在尝试弄清楚 NN 上下文中的偏见是什么以及如何使用它。我现在尝试了非黑色图像。没有效果。
    • 我已经编辑了我的答案。顺便说一句,我不知道为什么你的问题被否决了,请不要关注它。
    • 我目前不知道权重是什么,现在正在研究它。同时,我添加了非黑色图像作为输入,向网络添加了 bias=True 属性,现在使用 10 个隐藏层和 100 个 epoch 对其进行训练。需要时间。
    • 当我询问你的神经网络架构时,它的意思是:层数和类型、激活函数和权重的数量。训练 NN 意味着估计每个权重的最佳值。
    • net = buildNetwork(921600, 10, 921600, bias=True) 这是我用来建立网络的。 921600 是像素数。 10 是隐藏神经元的数量。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 所以,如果我使用一个相同的原始图像作为输入,并作为输出集版本的原始图像使用所需的过滤器处理,会更有意义吗?
    • 没有。 NN 是一个线性系统,响应不同的输入。相同的图像意味着相同的输入。您无法让线性系统以不同的方式响应相同的输入。它就像一个函数。 f(x) 在 x 处不能有 2 个或更多不同的值。对于 50 张图像中的每一张,在训练时使用原始图像作为输入,并将相应的处理后图像作为 NN 的结果。
    • 有道理。当我开始将它视为一个函数和近似值时,我就理解了它。谢谢你的回答。
    • “NN 是一个线性系统”,当您使用非线性激活函数(如 sigmoid 或 tanh)时,情况并非如此。
    • 对不起,我的错误。意味着单射函数,而不是线性函数。 f(x) 上的例子当然不会犯这个错误。更正:NN 是一个单射(一对一)系统,响应不同的输入。您无法让它以不同的方式响应相同的输入。
    猜你喜欢
    • 1970-01-01
    • 2018-10-19
    • 2017-11-22
    • 1970-01-01
    • 2018-10-10
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多