检查目标时出错:期望time_distributed_56具有3个维度,但数组的形状为(1000,1)

时间:2019-05-16 17:43:14

标签: keras deep-learning lstm embedding

我正在与Keras合作,尝试在LSTM层之前添加一个Embedding层。因此,我的输入数据不再是单一的表示形式,而仅包含实例的索引。这是代码:

n_chars = 97
n_in_seq_length = 9
n_out_seq_length = 1
n_batch = 256
n_epoch = 15

model = Sequential()
model.add(Embedding(n_chars, 200, input_length=n_in_seq_length))
model.add(LSTM(200, return_sequences=True))
model.add(LSTM(200, return_sequences=True))
model.add(TimeDistributed(Dense(n_chars, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['categorical_accuracy'])

X, y = np.random.randint(1, 97, (1000,9)), np.random.randint(1, 97, (1000,1))

model.fit(X, y, epochs=n_epoch, batch_size=n_batch)

这是错误消息:

ValueError: Error when checking target: expected lstm_121 to have 3 dimensions, but got array with shape (1000, 1)

我尝试了各种解决方案,例如添加RepeatVector层,但都无济于事。还要注意的是,我具有相同的代码,但是没有Embedding层(将单次热表示传递给LSTM),可以很好地工作。

0 个答案:

没有答案