我如何使用矩阵作为PyBran上的数据集?
作者:互联网
我正在使用pybrain来训练一个简单的神经网络,其中输入将是7×5矩阵.
以下是输入:
A = [[0, 0, 1, 0, 0],
[0, 1, 1, 0, 0],
[0, 1, 0, 1, 0],
[0, 1, 0, 1, 0],
[1, 1, 1, 1, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1]]
E = [[1, 1, 1, 1, 1],
[1, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[1, 1, 1, 1, 0],
[1, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[1, 1, 1, 1, 1]]
I = [[0, 0, 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, 0, 0],
[0, 0, 1, 0, 0]]
O = [[1, 1, 1, 1, 0],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 1, 1, 1, 0]]
U = [[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[0, 1, 0, 0, 1],
[0, 0, 1, 1, 0]]
我以为写这样的东西:
ds = SupervisedDataSet(1, 1)
ds.addSample((A), ("A",))
可能有效,但是我得到了:
ValueError: cannot copy sequence with size 7 to array axis with dimension 1
有什么办法可以将此数据集提供给pyBrain?
解决方法:
首先,您必须知道SupervisedDataSet可与列表一起使用,因此您需要将2D数组转换为列表.您可以使用以下方法进行操作:
def convertToList (matrix):
list = [ y for x in matrix for y in x]
return list
然后,您需要将新列表提供给方法SupervisedDataSet.
另外,如果您想使用该信息来建立网络,则应该使用一些数字来标识字母,例如A = 1,E = 2,I = 3,O = 4,U =5.因此,第二个SupervisedDataSet的参数应该只是一个数字1.这样,您说的是“对于包含35个元素的列表,请使用这些数字来标识一个数字”.
最后,您的代码应如下所示:
ds = SupervisedDataSet(35, 1)
A2 = convertToList(A)
ds.addSample(A2, (1,))
E2 = convertToList(E)
ds.addSample(E2, (2,))
I2 = convertToList(I)
ds.addSample(I2, (3,))
O2 = convertToList(O)
ds.addSample(O2, (4,))
U2 = convertToList(U)
ds.addSample(U2, (5,))
希望这会有所帮助.
标签:pybrain,dataset,python 来源: https://codeday.me/bug/20191121/2049212.html