![]() |
1
2
首先,我有一些不相关的建议。我不认为你应该输出每个单词的手套向量。为什么?word2vec方法旨在封装word 意义 可能不包含拼写信息。然而,这个意义也有助于产生 有意义的 句子。因此,我会让lstm在阅读每个单词的前两个字母后产生它自己的隐藏状态(就像您现在所做的那样)。然后我会把这个序列展开成序列 第一维度 (索引到单词映射的索引中)。然后,我将获取该输出,通过一个嵌入层处理它,该嵌入层将单词索引映射到它们的手套嵌入,然后我将通过另一个输出lstm运行该输出以生成更多索引。你可以根据自己的需要来堆叠它-但是2到3层可能就足够了。 即使有了这些变化,你也不太可能在生成容易记住的句子方面看到任何成功。对于这个主要问题,我认为通常有两种方法。第一个是增加你的损失,让你感觉到结果句子是一个“有效的英语句子”。通过对输出句子进行词性标记,并添加与是否遵循标准句子结构(主谓副词直接宾语等)相关的损失,可以在程序上实现一定的准确性。尽管这个结果可能比下面的选择更容易,但它可能不会产生实际的自然结果。 我建议,除了以当前的方式训练您的模型之外,使用gan来判断输出语句是否是自然语句。有很多资源 Keras GANs ,所以我认为您不需要在这个答案中使用特定的代码。但是,这里有一个模型应该如何进行逻辑训练的概要:
继续重复这两个步骤(每次训练一个历元),直到开始看到更合理的结果。为了在一个正确的记忆法和一个容易记住的句子之间取得正确的平衡,你可能需要计算生成器(你的模型)中每个损失项的权重。 |
![]() |
leone · ValueError:输入数据应为非空 1 年前 |
![]() |
akozel · 分类任务的tensorflow输出层配置 1 年前 |
![]() |
A J · 为什么我的动态神经网络有0个参数? 1 年前 |