【问题标题】:how to feed pybrain ffn with one entry (to already trained network)?如何用一个条目(给已经训练好的网络)提供 pybrain ffn?
【发布时间】:2012-01-08 20:12:12
【问题描述】:

我需要训练网络,然后将测试数据一一提供给它。是否有包含它的示例或文档?

为了实现这一点,我对训练有素的网络进行了序列化,并将它用于每个新的传入条目。 问题是,我从 _convertToOneOfMany 得到了崩溃,即使我理解它的目的(来自 here)我也不明白它是如何工作的。

它的行为对我来说不是确定性的。它必须以某种方式解释类和标签,并且必须有一些我缺少的要求。它适用于整个数据集,但是如果我只采用随机线,它就会发疯。

Traceback (most recent call last):
File "ffn_iris.py", line 29, in <module>
tstdata._convertToOneOfMany()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PyBrain-0.3-py2.6.egg/pybrain/datasets/classification.py", line 142, in _convertToOneOfMany
newtarg[i, int(oldtarg[i])] = bounds[1]
IndexError: index (2) out of range (0<=index<1) in dimension 1

编辑: 更准确地说,让我告诉你我在做什么:我想为互联网上最著名的 NN 示例训练网络 ;) - Iris 数据集。

是这样的:

5.1,3.5,1.4,0.2,0
4.9,3.0,1.4,0.2,0
4.7,3.2,1.3,0.2,0
4.6,3.1,1.5,0.2,0
etc...

班级的最后一个零。整个数据集包含 60 行。 0 为 20,1 为 20,2 为 20。

我用数据读取文件并构建数据集:

alldata = ClassificationDataSet(4, class_labels=['Iris-setosa', 
                                                 'Iris-versicolor',
                                                 'Iris-virginica'])

--- loop here ---

alldata.addSample(line[0:4], line[4])


--- create testing and training sets ---
tstdata, trndata = alldata.splitWithProportion(0.7)


--- converted matrixes ---
trndata._convertToOneOfMany()
tstdata._convertToOneOfMany()

--- not important, just for completeness ----
fnn = buildNetwork(trndata.indim, 10, trndata.outdim, outclass=SoftmaxLayer)
trainer = BackpropTrainer(fnn, dataset=trndata,
                          momentum=0.01, verbose=True,
                          weightdecay=0.01)

我的问题与_convertToOneOfMany() 有关。当数据集或数据文件只包含几个条目(不是 60 个,分为三类)时,它会从问题的开头崩溃并出现异常。

崩溃数据集示例:

 6.5,3.0,5.2,2.0,1
 6.5,3.0,5.2,2.0,1
 6.2,3.4,5.4,2.3,2
 6.5,3.0,5.2,2.0,0

工作示例:

 6.5,3.0,5.2,2.0,1
 6.2,3.4,5.4,2.3,2
 6.5,3.0,5.2,2.0,0

convertToOneOfMany() 如何与数据集中的条目数或一个类子集的大小相关联?一行条目也崩溃了..

【问题讨论】:

    标签: python neural-network pybrain


    【解决方案1】:

    如果您粘贴更多代码可能会更好。关于您的问题,在他们的文档中:http://pybrain.org/docs/quickstart/network.html 基本上是这个命令:net.activate([2, 1]) 在这种情况下,网络有 2 个输入,他/她输入值 2 和 1 我建议您阅读他们的文档

    【讨论】:

    • 我扩展了问题 - 你能看一下吗?谢谢! PyBrain 有经验的用户是否有任何论坛或邮件列表?
    猜你喜欢
    • 2019-10-20
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2012-08-16
    • 2021-09-02
    • 2012-08-30
    相关资源
    最近更新 更多