【发布时间】:2018-06-16 21:10:52
【问题描述】:
我正在尝试使用 keras 训练 LSTM 模型,但我认为我这里出了点问题。
我得到一个错误
ValueError:检查输入时出错:预期 lstm_17_input 有 3维,但得到了形状为(10000, 0, 20)的数组
虽然我的代码看起来像
model = Sequential()
model.add(LSTM(256, activation="relu", dropout=0.25, recurrent_dropout=0.25, input_shape=(None, 20, 64)))
model.add(Dense(1, activation="sigmoid"))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(X_train, y_train,
batch_size=batch_size,
epochs=10)
其中X_train 的形状为(10000, 20),前几个数据点类似于
array([[ 0, 0, 0, ..., 40, 40, 9],
[ 0, 0, 0, ..., 33, 20, 51],
[ 0, 0, 0, ..., 54, 54, 50],
...
而y_train 的形状为(10000, ),这是一个二进制 (0/1) 标签数组。
有人能指出我在哪里错了吗?
【问题讨论】:
-
你说
input_shape=(None, 20, 64)但你的输入只有两个维度(10000, 20)? -
@AndreHolzner 我曾经尝试设置 input_shape = (10000, 20),但没有运气。错误是 ValueError: Error when checks input: expected lstm_28_input to have 3 dimensions, but got array with shape (10000, 20)
-
尝试设置
input_shape=(None, 20, 1)并将输入大小调整为(10000,20,1)。例如。如果您的输入在 numpy 数组中,请使用 numpy.resize。 -
@AndreHolzner 刚试过。得到一个大小为 (10000, 20, 1) 的训练 np.array。但是,仍然有一个错误说尺寸不匹配。然后我将输入大小更改为 (20, 1),它现在可以工作了!
标签: python tensorflow deep-learning keras lstm