LSTM文本生成Input_shape



我正试图在我的模型中添加另一个LSTM层,但我只是一个初学者,我不是很好。我正在使用(更好(-唐纳德·特朗普推特!用于LSTM文本生成的Kaggle数据集。

我正在努力让它运行,因为它返回错误:

<ValueError: Input 0 of layer lstm_16 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 128]>

我的型号是:

print('Building model...')
model2 = Sequential()
model2.add(LSTM(128, input_shape=(maxlen, len(chars)),return_sequences=True))
model2.add(Dropout(0.5))
model2.add(LSTM(128))
model2.add(Dropout(0.5))
model2.add(LSTM(128))
model2.add(Dropout(0.2))
model2.add(Dense(len(chars), activation='softmax'))
# optimizer = RMSprop(lr=0.01)
optimizer = Adam()
model.compile(loss='categorical_crossentropy', optimizer=optimizer)
print('model built')

该模型仅适用于两个LSTM层、两个Dropout层和一个密集层。我认为我的input_shape设置有问题,但我可能错了。我的模型是基于上面数据集笔记本中的一个笔记本。

为了堆叠RNN,您必须使用return_sequences=True。从该错误可以看出,该层期望3 dimentional tensor,但接收到2 dimentional。在这里,您可以看到return_sequences=True标志将输出一个3 dimentional张量。

如果为True,则每个时间步长的连续输出的完整序列为return(形状的3D张量(batch_size,output_features((。

假设您的输入层没有问题,并且输入数据正确传递,我建议尝试以下模型。

print('Building model...')
model2 = Sequential()
model2.add(LSTM(128, input_shape=(maxlen, len(chars)),return_sequences=True))
model2.add(Dropout(0.5))
model2.add(LSTM(128, return_sequences=True))
model2.add(Dropout(0.5))
model2.add(LSTM(128))
model2.add(Dropout(0.2))
model2.add(Dense(len(chars), activation='softmax'))
# optimizer = RMSprop(lr=0.01)
optimizer = Adam()
model.compile(loss='categorical_crossentropy', optimizer=optimizer)
print('model built')

相关内容

最新更新