其他分享
首页 > 其他分享> > 我如何使用矩阵作为PyBran上的数据集?

我如何使用矩阵作为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