gpt4 book ai didi

python - Pybrain 神经网络 : _convertToOneOfMany error

转载 作者:行者123 更新时间:2023-11-28 18:39:23 24 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

我不知道你的“目标”字段元素有什么值,但由于类标签从 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 的列索引。

关于python - Pybrain 神经网络 : _convertToOneOfMany error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28453408/

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