说我有一个嵌入张量:
emb = [[1,1],
[2,2],
[3,3],
[4,4]]
emb = tf.constant(emb)
我有一系列序列:
inputs = [[0,1,2,3]
[3,2]]
我想查找emb
和填充零以使每个序列具有相同的长度:
[[[1, 1],
[2, 2],
[3, 3],
[4, 4]],
[[4, 4],
[3, 3],
[0, 0],
[0, 0]]]
我尝试了tf.nn.embedding_lookup
,但收到了错误:
ValueError:参数必须是密集张量:[[0,1,2,3],[3,2]] - 得到了形状[2],但想要[2,4]。
是否可以在不[0, 0]
前加emb
?
答案 0 :(得分:1)
tf.nn.embedding_lookup(params, ids)
函数只接受密集的矩形张量作为[
{ "_id" : '', "_skills" : { "label" : "skill1", "skill_score" : 1 } },
{ "_id" : '', "_skills" : { "label" : "skill2", "skill_score" : 1 } },
{ "_id" : '' },
]
参数。 (一般情况下,对于期望tf.Tensor
或类似张量的参数(如NumPy数组)的所有TensorFlow运算符也是如此。)
对于稀疏数据,您可以使用tf.nn.embedding_lookup_sparse()
,它接受tf.SparseTensor
作为参数,可以表示不同长度的序列。 -XX:+PrintGCDateStamps -verbose:gc
由三个独立(密集)张量定义,表示非零的索引,非零值和整体密集形状。对于输入的示例,表示形式为:
ids