Tensorflow:带有字符输入的 RNN

Tensorflow : RNN with char input

假设我想在伪随机词(不是任何字典的一部分)上训练 RNN,所以我不能使用 word2vec。如何使用 tensorflow 表示单词中的每个字符?

如果你只是做字符,你可以只使用一个大小为 128 的热向量,它可以代表每个 ascii 字符(你可能想使用更小的,因为我怀疑你会使用所有的 ascii 字符,也许每个字符只有 26 个信件)。你真的不需要使用像词向量这样的东西,因为可能性的范围很小。

实际上,当您使用一种热门编码时,您就是每个字符的学习向量。假设您的第一个致密层(或 rnn 层)包含 100 个神经元。然后这将导致 128x100 矩阵与一个热编码相乘。由于除了一个值之外的所有值都不为零,因此您实际上是从矩阵中选择大小为 100 的一行,该矩阵是该字符的向量表示。本质上,第一个矩阵只是表示每个字符的向量列表,您的模型将学习这些向量表示。由于单热编码的稀疏性,仅查找行通常比执行完整的矩阵乘法更快。这就是 tf.nn.embedding_lookup 或 tf.gather 函数的用途。