【发布时间】:2017-03-10 15:24:11
【问题描述】:
我正在尝试在keras 中创建简单的RNN,它将学习这个数据集:
X = np.array([[1, 1, 1, 1, 1, 1], [1, 1, 1], [2, 2, 2, 2, 2], [1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2]])
y = np.array([[1], [1], [0], [1], [0]])
1s 数组是 1,2s 数组是 0
这是我的代码:
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.layers import LSTM
from keras.optimizers import RMSprop
import numpy as np
X = np.array([[1, 1, 1, 1, 1, 1], [1, 1, 1], [2, 2, 2, 2, 2], [1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2]])
y = np.array([[1], [1], [0], [1], [0]])
print('Build model...')
model = Sequential()
model.add(LSTM(128))
model.add(Dense(1))
model.add(Activation('softmax'))
optimizer = RMSprop(lr=0.01)
model.compile(loss='categorical_crossentropy', optimizer=optimizer)
但我收到了错误:
ValueError:顺序模型中的第一层必须得到一个
input_shape或batch_input_shape参数。
为什么LSTM 层应该有输入形状?据我所知,理论上可以有不同的输入形状,因为这是循环神经网络。
如何让我的代码工作?
【问题讨论】:
-
你能打印出
X.shape吗? -
@MarcinMożejko (5,)
-
你能打印出来吗? (我的意思是
X) -
@MarcinMożejko 数组([[1, 1, 1, 1, 1, 1], [1, 1, 1], [2, 2, 2, 2, 2], [1, 1, 1, 1, 1, 1, 1, 1], [2, 2, 2]], dtype=object)
-
您需要使每个列表具有相同的长度。 Keras 不接受不同长度的序列。
标签: keras neural-network deep-learning recurrent-neural-network keras-layer