【发布时间】:2017-11-26 19:50:23
【问题描述】:
我是第一次使用 TensorFlow,无法理解 embedding_lookup 函数。我有一系列代表单个特征向量的索引,比如说[0,3,2,5]。我想用它们对应的嵌入替换这些索引,所以我将嵌入和索引向量放在embedding_lookup 中。然后它返回一个 4 X n 张量,其中 n 是每个嵌入的长度。我的想法,也许我误解了一些事情,我希望这是一个长度为 4*n 的单行向量,我应该能够通过重塑来完成。
如果我不想发送 embedding_lookup 单个实例的特征索引,而是想向它发送数据集中每个实例的索引,假设每个列表的长度为 4,它将返回一个 m X 4 X n 张量(其中 m 是集合的大小),我想将其重塑为 m X n*4。假设我在这里还没有偏离轨道,我正在使用以下代码执行此操作:
... # Stuff
word_embeddings = tf.Variable(self.word_embeddings, name="embeddings")
feature_ids = tf.placeholder(
tf.int32, shape=(None, input_size), name="feature_ids")
X = tf.reshape(
tf.nn.embedding_lookup(word_embeddings, feature_ids), [len(features),-1], name="X")
y = tf.placeholder(tf.int64, shape=(None), name='y')
with tf.name_scope("nn"):
hidden1 = fully_connected(X, hidden_size1, scope="hidden1")
hidden2 = fully_connected(hidden1, hidden_size2, scope="hidden2")
output = fully_connected(hidden2, output_size, activation_fn=None, scope="output")
... # More stuff
但我得到的是以下内容:
Traceback (most recent call last):
File "....py", line 84, in test
hidden1 = fully_connected(X, hidden_size1, scope="hidden1")
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
return func(*args, **current_args)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1469, in fully_connected
outputs = layer.apply(inputs)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/python/layers/base.py", line 492, in apply
return self.__call__(inputs, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/python/layers/base.py", line 434, in __call__
self.build(input_shapes[0])
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/python/layers/core.py", line 109, in build
raise ValueError('The last dimension of the inputs to `Dense` '
ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.
关于我哪里出错了有什么想法吗?
【问题讨论】:
标签: python tensorflow word-embedding