python - 使用具有 LSTM 和动态 RNN 的可训练词嵌入层 : AdamOptimizer expected float_ref instead of float

标签 python tensorflow nlp lstm

我在词嵌入序列上使用 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/

相关文章:

Python:如何获取 GPU 数量

python - 为什么这不起作用? CountVectorizer 中的停用词

python-3.x - 尝试训练逻辑回归模型时出现内存故障

python - 从字典列表创建 Pandas 数据框,字典键作为列

Tensorflow - tf.variable_scope,GAN 的重用参数

python - 使用来自同一 URL 的多个 POST 数据进行抓取

python-3.x - 我在用gpu训练吗?

machine-learning - SpaCy NER 区分数字或实体

python - 为什么hasattr会执行@property装饰器代码块

Python Pandas切片各种数据类型