Pybrain神经网络:转化为neofmany

2024-10-01 22:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Pybrain的新手,正在尝试构建一个神经网络。首先,我遇到了the error described here

AttributeError: 'Superviseddataset' object has no attribute '_convertToOneOfMany'

我尝试了那条线的公认答案中描述的解决方法。虽然它看起来很管用,但它现在给了我一个新的错误。以下是我代码的相关部分:

将文件读入分类数据集的部分。3个输入属性,2个类,拆分读数组,前3列为“input”,最后一列为“target”:

^{pr2}$

构建一个简单网络的部分,是pybrain的标准:

inLayer = SigmoidLayer(3)
hiddenLayer = SigmoidLayer(5)
outLayer = SigmoidLayer(2)

fnn.addInputModule(inLayer)
fnn.addModule(hiddenLayer)
fnn.addOutputModule(outLayer)

in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)

fnn.addConnection(in_to_hidden)
fnn.addConnection(hidden_to_out)

fnn.sortModules()

这是解决方法,如上所述:

tstdata_temp, trndata_temp = ds.splitWithProportion(0.25)

tstdata = ClassificationDataSet(3, target=1, nb_classes=2)
for n in xrange(0, tstdata_temp.getLength()):
     tstdata.addSample( tstdata_temp.getSample(n)[0], tstdata_temp.getSample(n)[1] )

trndata = ClassificationDataSet(3, target=1, nb_classes=2)
for n in xrange(0, trndata_temp.getLength()):
     trndata.addSample( trndata_temp.getSample(n)[0], trndata_temp.getSample(n)[1] )

trndata._convertToOneOfMany()
tstdata._convertToOneOfMany()

这是我在第一个转换行得到的错误:

IndexError: index 2 is out of bounds for axis 1 with size 2

Tags: tointargetouttemphiddenhiddenlayerinlayer
1条回答
网友
1楼 · 发布于 2024-10-01 22:43:14

我不知道“target”字段元素的值是什么,但在使用\u convertToOneOfMany()时也遇到了同样的错误,因为类标签从1开始而不是从0开始。在

\u convertToOneOfMany()将数据集的“target”字段从大小为[n\u samples,1]的0、1、2等类标签数组转换为大小为[n\u samples,n\u classes]的100、010、001等标签数组(这样做是:0->;100,1->;010和2->;001)。因此,如果有3个类被标记为1、2和3,则\u convertToOneOfMany()将执行1->;010,2->;001,3->;错误!在

这个函数的代码如下:https://github.com/pybrain/pybrain/blob/master/pybrain/datasets/classification.py,在第144行,类标签(oldtarg[i])用作newtarg的列索引。在

相关问题 更多 >

    热门问题