我有一个3D NumpyArray,我想通过Keras神经网络。
由于一次热编码,数组变成了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).')
您可以使用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)