Chr*_*ian 3 machine-learning machine-translation deep-learning keras
对于一些自学,我正在尝试使用Keras实现简单的序列到序列模型。虽然我有了基本的想法,并且在线上有几本教程可用,但是在阅读这些教程时,我仍然在一些基本概念上苦苦挣扎:
encoder_input_data,decoder_input_data,decoder_target_data说这些确实是针对Seq2Seq的两种不同方法是否正确?哪一个更好,为什么?还是我看错了第二篇教程?我已经对序列分类和序列标记有了一定的了解,但是对于序列到序列,它还没有被正确点击。
是的,这两种方法是不同的,并且还有其他变化。MachineLearningMastery简化了一些操作使其变得可访问。我相信Keras方法的性能可能会更好,这是您需要注意的情况,而这几乎总是这种情况,这是您需要的。
MachineLearningMastery具有一个变通的解决方法,使它无需输入解码器输入即可工作。它只是重复上一个隐藏状态,并将其作为每个时间步的输入。这不是一个灵活的解决方案。
model.add(RepeatVector(tar_timesteps))
Run Code Online (Sandbox Code Playgroud)
另一方面,Keras教程还具有其他一些概念,例如教师强迫(使用目标作为解码器的输入),嵌入(缺少)和更长的推理过程,但这应该引起您的注意。
我还将推荐pytorch教程,我认为这是最合适的方法。
编辑: 我不知道您的任务,但您想要的单词嵌入是
x = Embedding(num_encoder_tokens, latent_dim)(encoder_inputs)
Run Code Online (Sandbox Code Playgroud)
在此之前,您需要将词汇表中的每个单词映射为一个整数,将每个句子转换为一个整数序列,然后将该整数序列传递给模型(lament_dim的嵌入层可能为120)。因此,您的每个单词现在都由大小为120的向量表示。输入的句子也必须全部相同。因此,找到合适的最大句子长度,如果句子比max len短(其中0表示空词),则将每个句子变成该长度并以零填充。
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |