我想构建一个序列到序列的模型,该模型接收一个由1和0组成的长度为2048的向量作为输入(例如 [1,0,1,0,0,1,0,0,0,1,…,1]),并将其翻译成我已知的输出,即长度为1到20的字符序列(例如 GBNMIRN, ILCEQZG, 或 FPSRABBRF)。
我的目标是创建一个模型,能够接收一个新的长度为2048的由1和0组成的向量,并预测输出序列的样子。
但我不知道如何将这些应用到我的问题中。有没有类似的项目可以参考?我该如何使用现有的seq2seq模型或LSTM来实现这个功能?(使用Python实现)
我正在使用Python的Keras库。
回答:
你的输入很奇怪,因为它是二进制代码。我不知道模型是否能很好地工作。
首先,你需要为输入和输出添加开始和结束标记,以指示边界。然后设计每个时间步的区域模块,包括如何使用隐藏状态。你可以尝试以下简单的GRU/LSTM网络。
关于细节,你可以尝试编码器
和解码器
此外,你可以参考论文Neural Machine Translation by Jointly Learning to Align and Translate中的注意力机制。其结构如下所示。
关于细节
虽然你在使用Keras,但我认为阅读PyTorch代码会有所帮助,因为它直观且易于理解。可以参考PyTorch教程