我正在实现一个LSTM自动编码器,该编码器的输入为x,并希望获得与x相同的输出。但是,我在执行过程中有几个问题,请在下面查看我的代码:
dict_size = 10
max_sentence_length = 5
embed_dim = 20
x = Input(shape=(max_sentence_length,), dtype='int32')
encoder_input = Embedding(dict_size, embed_dim)(x)
encoder_output=LSTM(32, return_sequences=True)(encoder_input)
deocder_output = LSTM(32, return_sequences=True)(encoder_output)
y = Dense(dict_size, activation='softmax')(deocder_output)
model = Model(inputs=x, outputs=y)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
print(model.summary())
train_x = np.array([[3, 1, 2]])
train_x = pad_sequences(train_x, max_sentence_length, padding='post')
train_y = np_utils.to_categorical(train_x, dict_size)
model.fit(train_x, train_y, batch_size=1, epochs=1)
predict_y = model.predict(train_x)
print(predict_y)
在此代码中,第一个问题是:“ ValueError:检查目标时出错:预期density_1具有3维,但数组的形状为(5,10)”,我真的不知道如何解决此问题首先。
第二个问题是,x的长度为3,而加上额外的填充,其长度变为5;在最后阶段,输出将是5x10的矩阵,即最终输出的最后两个元素不应参与softmax的计算。有什么方法可以快速解决此问题?
非常感谢!