【问题标题】:Pybrain neural network: _convertToOneOfMany errorPybrain 神经网络:_convertToOneOfMany 错误
【发布时间】:2015-02-11 11:38:21
【问题描述】:

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

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

我尝试了该线程接受的答案中描述的解决方法。虽然它似乎有效,但它现在给了我一个新错误。这些是我的代码的相关块:

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

ds = ClassificationDataSet(inp=3, target=1, nb_classes=2)
tf = open('datafile.txt')
a = np.loadtxt(tf) 
a = np.hsplit(a, (3,4))
ds.setField('input', a[0])
ds.setField('target', a[1])

构建简单网络的部分,非常标准的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

【问题讨论】:

    标签: python machine-learning pybrain


    【解决方案1】:

    我不知道你的“目标”字段元素有什么值,但由于类标签从 1 而不是 0 开始,我在 _convertToOneOfMany() 中遇到了同样的错误。

    _convertToOneOfMany() 将数据集的“目标”字段从类标签数组(如大小 [n_samples,1] 的 0、1、2)转换为标签数组(如大小为 [n_samples, 的 100、010、001) n_classes](它确实如此:0 -> 100、1->010 和 2->001)。因此,如果您有 3 个类标记为 1、2 和 3 _convertToOneOfMany() 将执行 1->010, 2->001, 3-> 错误!

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

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 2013-02-01
      • 2016-10-19
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2013-05-28
      • 2012-09-23
      相关资源
      最近更新 更多