标签: embedding-lookup

如何在张量流中使用非常大的(> 2M)字嵌入?

我正在运行一个带有非常大的嵌入字(> 2M字)的模型.当我使用tf.embedding_lookup时,它期望矩阵很大.当我运行时,我随后摆脱了GPU内存错误.如果我减小嵌入的大小,一切正常.

有没有办法处理更大的嵌入?

nlp embedding deep-learning tensorflow embedding-lookup

10
推荐指数
1
解决办法
2011
查看次数

带有不等大小列表的Tensorflow嵌入查找

嘿,我正在尝试使用嵌入将多标签分类数据投影到密集空间中。

这是一个玩具示例。假设我有四个类别,想将它们投影到2D空间中。此外,我得到了两个实例,第一个实例属于类别0,第二个实例属于类别1。

该代码将如下所示:

sess = tf.InteractiveSession()
embeddings =  tf.Variable(tf.random_uniform([4, 2], -1.0, 1.0))
sess.run(tf.global_variables_initializer())
y = tf.nn.embedding_lookup(embeddings, [0,1])
y.eval()
Run Code Online (Sandbox Code Playgroud)

并返回如下内容:

array([[ 0.93999457, -0.83051205],
       [-0.1699729 ,  0.73936272]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。现在想象一个实例属于两个类别。嵌入查找将返回两个向量,例如,我可以将它们减小:

y = tf.nn.embedding_lookup(embeddings, [[0,1],[1,2]]) # two categories
y_ = tf.reduce_mean(y, axis=1)
y_.eval()
Run Code Online (Sandbox Code Playgroud)

就像我期望的那样工作。现在,当我批次中的实例不属于相同数量的类别时,就会出现我的问题,例如:

y = tf.nn.embedding_lookup(embeddings, [[0,1],[1,2,3]]) # unequal sized lists
y_ = tf.reduce_mean(y, axis=1)
y_.eval()

ValueError: Argument must be a dense tensor: [[0, 1], [1, 2, 3]] - got shape [2], but wanted [2, 2].
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法吗?

categorical-data tensorflow embedding-lookup

5
推荐指数
0
解决办法
432
查看次数