【问题标题】:Why my neural network shows strange results?为什么我的神经网络显示奇怪的结果?
【发布时间】:2014-01-27 05:19:20
【问题描述】:

我使用 PyBrain 创建了一个简单的神经网络:

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer

    L_Z = [
    0b111111,
    0b000010,
    0b000100,
    0b001000,
    0b010000,
    0b111111
    ]

C_Z = [
    0b111111,
    0b100001,
    0b000110,
    0b000001,
    0b100001,
    0b111111
    ]

net = buildNetwork(6, 3, 1)


ds = SupervisedDataSet(6, 1)

ds.addSample(tuple(L_Z), (1,))
ds.addSample(tuple(C_Z), (0,))

trainer = BackpropTrainer(net, ds)
trainer.trainUntilConvergence()


print net.activate(L_Z)
print net.activate(C_Z)

但每次运行程序后显示不同的结果。我的网络应该学会找到英文“Z”字母和西里尔字母“З”字母。怎么了?

【问题讨论】:

    标签: python python-2.7 artificial-intelligence neural-network pybrain


    【解决方案1】:

    神经网络是随机初始化的收敛向量。但是根据模型,每个单元格都与上层的每个其他单元格链接,因此这意味着没有顺序。

    => 具有值 a、b、c 的神经网络等价于 b、c、a 或 c、b、a 例如(粗略地说)

    再加上它们随机开始的事实可以为您提供答案:许多模型可以解决您的问题,并且每次连续迭代都会收敛到一个或另一个

    【讨论】:

      【解决方案2】:

      您的方法根本不正确。具有 6 个输入的网络意味着每个输入都是一个浮点数,可以从 0 变为 1。PyBrain 不会告诉您何时给出的值太高或太低。例如,0b111111 实际上是 63。如果您希望每个检测单元都有一个输入,则需要使用具有 36 个输入的网络。

      L_Z = [
          1,1,1,1,1,1,
          0,0,0,0,1,0,
          0,0,0,1,0,0,
          0,0,1,0,0,0,
          0,1,0,0,0,0,
          1,1,1,1,1,1
          ]
      
       C_Z = [
          1,1,1,1,1,1,
          1,0,0,0,0,1,
          0,0,0,1,1,0,
          0,0,0,0,0,1,
          1,0,0,0,0,1,
          1,1,1,1,1,1
          ]
      
       net = buildNetwork(36, 3, 1)
      
      
       ds = SupervisedDataSet(36, 1)
      
       ds.addSample(L_Z, [1])
       ds.addSample(C_Z, [0])
      
       trainer = BackpropTrainer(net, ds)
      
       for x in range(1000):
        trainer.train()
      
       print net.activate(L_Z)
       print net.activate(C_Z)
      

      我很惊讶 .trainUntilConvergeance() 正在工作,通常它会保留 1/4 的数据进行验证,如果你只给它两个示例,它通常会崩溃。在任何情况下,此代码都适用于您想要的结果,但如果您尝试进行计算机视觉,他们通常会使用多种方法来检测事物。

      【讨论】:

        猜你喜欢
        • 2019-05-13
        • 2016-08-24
        • 2016-02-13
        • 1970-01-01
        • 2012-10-13
        • 2023-03-18
        • 2012-11-08
        • 2018-05-24
        • 1970-01-01
        相关资源
        最近更新 更多