我正在使用pybrain来训练一个简单的神经网络,其输入将是一个7x5矩阵。
以下是输入:
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?
答案 0 :(得分:3)
首先,您必须知道SupervisedDataSet与list一起使用,因此您需要将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,))
希望这可以提供帮助。