Tensorflow Keras“return_sequences”选项返回2D数组而不是3D数组

Tensorflow Keras“return_sequences”选项返回2D数组而不是3D数组,tensorflow,neural-network,keras,nlp,Tensorflow,Neural Network,Keras,Nlp,我尝试使用一个简单的字符级Keras模型从句子中提取关键文本 我给它x_列一个填充的dim n_示例序列,500代表整个句子,y_列一个填充的dim n_示例序列,100代表要提取的导入文本 我尝试这样一种简单的模式: vocab_size = 1000 src_txt_length = 500 sum_txt_length = 100 inputs = Input(shape=(src_txt_length,)) encoder1 = Embedding(vocab_size, 128)(i

我尝试使用一个简单的字符级Keras模型从句子中提取关键文本

我给它x_列一个填充的dim n_示例序列,500代表整个句子,y_列一个填充的dim n_示例序列,100代表要提取的导入文本

我尝试这样一种简单的模式:

vocab_size = 1000
src_txt_length = 500
sum_txt_length = 100
inputs = Input(shape=(src_txt_length,))

encoder1 = Embedding(vocab_size, 128)(inputs)
encoder2 = LSTM(128)(encoder1)
encoder3 = RepeatVector(sum_txt_length)(encoder2)

decoder1 = LSTM(128, return_sequences=True)(encoder3)
outputs = TimeDistributed(Dense(100, activation='softmax'))(decoder1)

model = Model(inputs=inputs, outputs=outputs)
model.compile(loss='categorical_crossentropy', optimizer='adam')
当我尝试用以下代码训练它时:

hist = model.fit(x_train, y_train, verbose=1, validation_data=(x_test, y_test), batch_size=batch_size, epochs=5)
我得到一个错误:

ValueError: Error when checking target: expected time_distributed_27 to have 3 dimensions, but got array with shape (28500, 100)
我的问题是:在最后一个LSTM层上,我将return_sequences参数设置为True,但密集完全连接层告诉我输入是二维的


我做错了什么?任何帮助都将不胜感激

它不是在抱怨TimeDistributed的输入,而是目标y_train.shape==n_examples,100,它不是3D的。预测序列和单个点之间存在不匹配。换句话说,输出是3D的,但y_列是2D的。

您是否尝试过将时间分布和密度分成两行?不幸的是,是的。即使我删除了TimeDistributed层并运行它,我也会得到一个类似的错误:ValueError:检查目标时出错:预期密集_43有3维,但得到了形状为28500、100的数组