我在单词嵌入序列上使用RNN来对句子进行分类。起初,我正在喂养预先训练过的单词嵌入,一切正常。我使用维度(Vocab大小,嵌入大小)将嵌入矩阵设为tf.placeholder
,并从GloVe中提供一些预先训练的嵌入。我还使用tf.nn.embedding_lookup
将我的输入(这是单词ID序列)转换为嵌入序列。
然后我想让模型也训练嵌入,所以我将嵌入矩阵设为tf.Variable
而不是占位符。现在TensorFlow给了我这个错误 - 显然AdamOptimizer无法处理嵌入查找。有什么想法或者如何解决这个问题?
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input 0 of node
Adam/update_embeddings/AssignSub was passed float from _recv_embeddings_0:0
incompatible with expected float_ref.
答案 0 :(得分:1)
您无法将值提供给变量并同时对其进行优化。相反,您必须首先对该变量运行tf.assign以将其初始化为fed值,然后运行优化器。或者,更简单地说,您可以将手套向量作为变量的初始值传递,并运行tf.global_variables_initializer。