如何在PyBran上使用Matrix作为数据集?

时间:2014-10-30 19:08:24

标签: python dataset pybrain

我正在使用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?

1 个答案:

答案 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,))

希望这可以提供帮助。