具有可变长度LSTM的“ ValueError:“平面”输入的形状未完全定义”

时间:2018-10-28 04:28:43

标签: python keras lstm text-classification variable-length

这是我的代码:

"select[value='https://www.mysited-com/admin/order?per_page=100']"

我正在构建具有通过以下方式输入的LSTM this stackoverflow question。但是现在我的模型在说 from keras.layers import LSTM, Bidirectional, Dense, Input, Flatten from keras.models import Model input = Input(shape=(None, 100)) lstm_out = Bidirectional(LSTM(10, return_sequences=True))(input) something = Flatten()(lstm_out) output = Dense(22, activation='softmax')(something) model = Model(inputs=input, outputs=output) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) 。我该如何解决?

预先感谢

1 个答案:

答案 0 :(得分:0)

您不能修复这个特殊问题,因为您可以将可变大小的矢量传递给Dense层。 为什么?因为它具有固定大小的权重矩阵,即内核W

您应该查看可处理可变长度序列的图层,例如RNN。例如,您可以让LSTM学习整个序列的表示形式:

input = Input(shape=(None, 100))
lstm_out = Bidirectional(LSTM(10))(input) # the LSTM produces a single fixed size vector
output = Dense(22, activation='softmax')(lstm_out) # Dense classifies it

如果要在模型中增加容量,可以链接RNN层,只要最后一个不返回序列即可。

lstm_out = Bidirectional(LSTM(10, return_sequences=True))(input)
lstm_out = Bidirectional(LSTM(10))(lstm_out) # this LSTM produces a single vector