假设我想在伪随机词(不是任何词典的一部分)上训练RNN,所以我不能使用word2vec。如何使用tensorflow表示单词中的每个字符?
答案 0 :(得分:2)
如果您只是在做角色,您可以使用一个大小为128的热矢量,它可以代表每个ascii字符(您可能想要使用较小的,因为我怀疑您将使用所有ascii字符,每个字母可能只有26个) 。因为可能性范围很小,所以你真的不需要使用像单词向量这样的东西。
实际上当你使用一个热门编码时,你就会学习每个角色的向量。假设您的第一个密集层(或rnn层)包含100个神经元。然后,这将导致128x100矩阵与一个热编码相乘。由于除了其中一个值之外的所有值都不为零,因此您实际上是从矩阵中选择一个大小为100的行,该矩阵是该字符的向量表示。基本上,第一个矩阵只是表示每个字符的向量列表,您的模型将学习这些向量表示。由于一个热编码的稀疏性,通常更快地查找行而不是执行全矩阵乘法。这就是tf.nn.embedding_lookup或tf.gather函数用于。