gpt4 book ai didi

python - 为什么我的神经网络显示奇怪的结果?

转载 作者:行者123 更新时间:2023-12-01 05:27:44 25 4
gpt4 key购买 nike

我使用 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”字母和西里尔语“З”字母。怎么了?

最佳答案

您的方法根本上是错误的。具有 6 个输入的网络意味着每个输入都是一个可以从 0 到 1 的 float 。当您给出的值过高或过低时,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 的数据进行验证,如果你只给它两个例子,它通常会崩溃。无论如何,这段代码都可以达到您想要的结果,但如果您尝试进行计算机视觉,通常他们会使用多种方法的组合来检测事物。

关于python - 为什么我的神经网络显示奇怪的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21006971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com