虽然我正尝试从官方网站重新实现keras seq2seq。
https://keras.io/examples/lstm_seq2seq/
原因: 问题在于某些语言包含的字符太多,因此模型需要太多的内存。因为此示例使用一个热转换字符索引作为输入和输出。
我的解决方案:
因此,我试图使用索引本身,并在encoder_inputs
和decoder_inputs
&decoder_outputs
之后使用嵌入层。
问题:
我试图输入和输出两个索引,它们将形成[num_samples x sequence_length]
的形状,嵌入层将发出[num_samples x sequence_length x embedding_dimension]
。
模型的形状如下:
Model(inputs=[encoder_inputs, decoder_inputs], outputs=[decoder_outputs])
并且有两个单独的嵌入层
Embedding(...)(encoder_inputs) # Embedding layer for encoder - language A
Embedding(...)(decoder_inputs) # Embedding layer for decoder - language B
Embedding(...)(decoder_outputs) # Embedding layer for decoder - language B
请注意,这种尝试反向传播的方法是使用序列中的索引,而不是嵌入的索引,因为我仅使用索引!但是我想从Embedded解码器的输出中返回prop,以便Embedding层也可以完全训练。
简而言之,我想从输入输出数据的层的层步+ 1向后传播。
我如何才能在Keras中执行这样的事情?