我在词嵌入序列上使用 RNN 来对句子进行分类。起初,我正在提供预先训练的词嵌入,一切都运行良好。我将嵌入矩阵设为一个具有维度(词汇大小、嵌入大小)的 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.
最佳答案
您不能在向变量提供值的同时对其进行优化。相反,您必须首先对该变量运行 tf.assign 以将其初始化为馈送值,然后运行优化器。或者,更简单的是,您可以将手套向量作为变量的初始值设定项传递并运行 tf.global_variables_initializer。
关于python - 使用具有 LSTM 和动态 RNN 的可训练词嵌入层 : AdamOptimizer expected float_ref instead of float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43711867/