在Theano的3D numpy阵列

时间:2016-06-28 00:19:02

标签: python numpy neural-network theano keras

我想要在Keras神经网络中使用3D NumpyArray。

由于一次热编码,阵列变成了3D阵列。

    [
    [[0,1,0,0], [1,0,0,0]],
    [[0,0,0,1], [1,1,0,0]],
    [[0,0,1,0], [0,0,0,1]]
    ]

由于Keras只能计算2D数组,我的问题是,如何减少维数并将其用于序列keras NN?

我目前收到错误:

TypeError: ('Bad input argument to theano function with name "D:\\Python27\\lib\\site-packages\\keras\\backend\\theano_backend.py:503"  at index 0(0-based)', 'Wrong number of dimensions: expected 2, got 3 with shape (32L, 10L, 12L).')

1 个答案:

答案 0 :(得分:0)

您可以使用numpy.ndarray.flatten将其转换为1D数组。例如:

import numpy as np
a = np.array(
    [
        [[0, 1, 0, 0], [1, 0, 0, 0]],
        [[0, 0, 0, 1], [1, 1, 0, 0]],
        [[0, 0, 1, 0], [0, 0, 0, 1]]
    ]
    )
a.flatten()

由此,如果你想逐行拆分,我建议你做

import numpy as np
a = np.array(
    [
        [[0, 1, 0, 0], [1, 0, 0, 0]],
        [[0, 0, 0, 1], [1, 1, 0, 0]],
        [[0, 0, 1, 0], [0, 0, 0, 1]]
    ]
    )
a = map(np.ndarray.flatten, a)