我正在尝试学习如何使用 TensorFlow 构建用于语音识别的 RNN。作为开始,我想尝试一些示例模型放在 TensorFlow 页面TF-RNN
根据建议,我花了一些时间通过处理 word2vec 模型代码的基本版本来了解如何将单词 ID 嵌入到密集表示(向量表示)中。我对实际操作有所了解,直到我在TF-RNNtf.nn.embedding_lookup
中实际遇到与二维数组一起使用的相同函数,但它不再有意义。 ptb_word_lm.py
我虽然tf.nn.embedding_lookup
做了:
给定一个 2-d arrayparams
和一个 1-d array ids
,函数tf.nn.embedding_lookup
从参数中获取行,对应于 给出的索引ids
,它与它返回的输出的维度保持一致。
我感到困惑的是:
当尝试使用相同的参数和 2-d arrayids
时,tf.nn.embedding_lookup
返回 3-d array,而不是 2-d,我不明白为什么。
我查阅了Embedding Lookup的手册,但我仍然很难理解分区的工作原理以及返回的结果。我最近尝试了一些简单的例子,tf.nn.embedding_lookup
它似乎每次都返回不同的值。这种行为是由于分区中涉及的随机性造成的吗?
请帮助我了解如何tf.nn.embedding_lookup
工作,为什么在两者中都使用它们word2vec_basic.py
,ptb_word_lm.py
即,甚至使用它们的目的是什么?