TF.Keras中的LSTM层输入不兼容

时间:2019-07-10 22:26:33

标签: python tensorflow keras lstm tf.keras

我正在尝试对一些我嵌入的文本数据运行LSTM。

我的输入的形状为(training_set_size, paragraph_length, embedding_dimension)

输出是0到31之间的整数的矢量,表示32个可能的标签之一,每个单词都被标签。它的形状为(training_set_size, paragraph_length, 1)

在添加嵌入之前,需要进行一些细微调整。 那时,我输入的形状是(training_set_size, paragraph_length, 1),LSTM层的input_shape是(paragraph_length, 1)

我的问题是我遇到了两个错误之一,而解决一个错误似乎导致了另一个错误。

这是我的代码:

model = tf.keras.models.Sequential([
    tf.keras.layers.LSTM(128, input_shape = (input_len, embedding_dim), return_sequences=True),
    tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(32))
])

model.compile('adam', 'sparse_categorical_crossentropy', metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

上面的代码产生以下错误:

  

ValueError:检查输入时出错:预期lstm_input具有3维,但数组的形状为(1000,100)


所以我试图更改LSTM输入的形状:

input_shape = (input_len, embedding_dim, 1)

这将产生以下不同的错误:

  

lstm_8层的输入0与该层不兼容:预期ndim = 3,找到的ndim = 4。收到完整图形:[None,1000,100,1]

编辑:training_set_size=17744paragraph_length=1000embedding_dim=100

0 个答案:

没有答案