如何在TensorFlow中使用tf.nn.embedding_lookup_sparse?

成为

我们已经尝试使用,tf.nn.embedding_lookup并且可以使用但是它需要密集的输入数据,现在我们需要tf.nn.embedding_lookup_sparse稀疏的输入。

我已经编写了以下代码,但出现了一些错误。

import tensorflow as tf
import numpy as np

example1 = tf.SparseTensor(indices=[[4], [7]], values=[1, 1], shape=[10])
example2 = tf.SparseTensor(indices=[[3], [6], [9]], values=[1, 1, 1], shape=[10])

vocabulary_size = 10
embedding_size = 1
var = np.array([0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81.0])
#embeddings = tf.Variable(tf.ones([vocabulary_size, embedding_size]))
embeddings = tf.Variable(var)

embed = tf.nn.embedding_lookup_sparse(embeddings, example2, None)

with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())

    print(sess.run(embed))

错误日志如下所示。

在此处输入图片说明

现在我不知道如何正确修复和使用此方法。任何意见,不胜感激。

潜入后safe_embedding_lookup_sparse的单元测试,我更困惑,为什么我如果给稀疏的权重,尤其是为什么我们得到的东西一样得到这样的结果embedding_weights[0][3],其中3没有出现在上面的代码。

在此处输入图片说明

里维纳斯

tf.nn.embedding_lookup_sparse()使用细分来组合嵌入,这需要SparseTensor的索引从0开始并增加1。这就是为什么会出现此错误的原因。

稀疏张量不需要保留布尔值,而只需要保留要从嵌入中检索的每一行的索引。这是您经过调整的代码:

import tensorflow as tf
import numpy as np

example = tf.SparseTensor(indices=[[0], [1], [2]], values=[3, 6, 9], dense_shape=[3])

vocabulary_size = 10
embedding_size = 1
var = np.array([0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0, 81.0])
embeddings = tf.Variable(var)

embed = tf.nn.embedding_lookup_sparse(embeddings, example, None)

with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    print(sess.run(embed)) # prints [  9.  36.  81.]

此外,您可以使用index fromtf.SparseTensor()通过允许的tf.nn.embedding_lookup_sparse()组合器之一组合单词嵌入

  • “ sum”为每一行计算嵌入结果的加权和。
  • “平均值”是加权总和除以总权重。
  • “ sqrtn”是加权和除以权重平方和的平方根。

例如:

example = tf.SparseTensor(indices=[[0], [0]], values=[1, 2], dense_shape=[2])
...
embed = tf.nn.embedding_lookup_sparse(embeddings, example, None, combiner='sum')
...
print(sess.run(embed)) # prints [ 5.]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

tf.nn.embedding_lookup_sparse 3D稀疏张量输入

来自分类Dev

为什么tf.nn.embedding_lookup使用嵌入列表?

来自分类Dev

为什么 tf.nn.embedding_lookup 使用嵌入列表?

来自分类Dev

如何在Tensorflow Keras中使用tf.nn.sampled_softmax_loss?

来自分类Dev

tf.nn.sparse_softmax_cross_entropy_with_logits 的意外输出

来自分类Dev

Tensorflow NN输入尺寸

来自分类Dev

TensorFlow中的tf.nn.sigmoid实现

来自分类Dev

Tensorflow embedding_lookup

来自分类Dev

我应该如何理解nn.Embeddings参数num_embeddings和embedding_dim?

来自分类Dev

如何正确使用tf.nn.max_pool_with_argmax

来自分类Dev

如何在使用 tf.nn.softmax 计算 softmax 期间避免填充索引?

来自分类Dev

Tensorflow:获得正确的NN精度

来自分类Dev

Tensorflow:tf.nn.separable_conv2d做什么?

来自分类Dev

导入tf.nn.rnn_cell中的Tensorflow错误

来自分类Dev

tensorflow tf.nn.conv2d 中的特征数

来自分类Dev

如何在nn.sequential模型中使用自定义torch.autograd.Function

来自分类Dev

将Torch.nn.Embedding用于GloVe:我们应该微调嵌入还是直接使用它们?

来自分类Dev

在Tensorflow中,如何解开tf.nn.max_pool_with_argmax获得的扁平化索引?

来自分类Dev

TensorFlow的tf.nn.dynamic_rnn运算符的输入张量如何构造?

来自分类Dev

TensorFlow的tf.nn.dynamic_rnn运算符的输入张量如何构造?

来自分类Dev

在Google Cloud Datalab中使用时,tf.nn.dynamic_rnn()返回错误

来自分类Dev

受过训练的TensorFlow NN的最大/最小

来自分类Dev

TensorFlow XOR NN eval 函数错误

来自分类Dev

如何实现 tf.nn.sigmoid_cross_entropy_with_logits

来自分类Dev

如何在张量流存储库中找到代码“ tf.nn.dynamic_rnn”?

来自分类Dev

仅冻结torch.nn.Embedding对象的某些行

来自分类Dev

从PyTorch nn.Embedding中检索原始数据

来自分类Dev

如何防止NN忘记旧数据

来自分类Dev

输入如何转换为NN的输入单元

Related 相关文章

  1. 1

    tf.nn.embedding_lookup_sparse 3D稀疏张量输入

  2. 2

    为什么tf.nn.embedding_lookup使用嵌入列表?

  3. 3

    为什么 tf.nn.embedding_lookup 使用嵌入列表?

  4. 4

    如何在Tensorflow Keras中使用tf.nn.sampled_softmax_loss?

  5. 5

    tf.nn.sparse_softmax_cross_entropy_with_logits 的意外输出

  6. 6

    Tensorflow NN输入尺寸

  7. 7

    TensorFlow中的tf.nn.sigmoid实现

  8. 8

    Tensorflow embedding_lookup

  9. 9

    我应该如何理解nn.Embeddings参数num_embeddings和embedding_dim?

  10. 10

    如何正确使用tf.nn.max_pool_with_argmax

  11. 11

    如何在使用 tf.nn.softmax 计算 softmax 期间避免填充索引?

  12. 12

    Tensorflow:获得正确的NN精度

  13. 13

    Tensorflow:tf.nn.separable_conv2d做什么?

  14. 14

    导入tf.nn.rnn_cell中的Tensorflow错误

  15. 15

    tensorflow tf.nn.conv2d 中的特征数

  16. 16

    如何在nn.sequential模型中使用自定义torch.autograd.Function

  17. 17

    将Torch.nn.Embedding用于GloVe:我们应该微调嵌入还是直接使用它们?

  18. 18

    在Tensorflow中,如何解开tf.nn.max_pool_with_argmax获得的扁平化索引?

  19. 19

    TensorFlow的tf.nn.dynamic_rnn运算符的输入张量如何构造?

  20. 20

    TensorFlow的tf.nn.dynamic_rnn运算符的输入张量如何构造?

  21. 21

    在Google Cloud Datalab中使用时,tf.nn.dynamic_rnn()返回错误

  22. 22

    受过训练的TensorFlow NN的最大/最小

  23. 23

    TensorFlow XOR NN eval 函数错误

  24. 24

    如何实现 tf.nn.sigmoid_cross_entropy_with_logits

  25. 25

    如何在张量流存储库中找到代码“ tf.nn.dynamic_rnn”?

  26. 26

    仅冻结torch.nn.Embedding对象的某些行

  27. 27

    从PyTorch nn.Embedding中检索原始数据

  28. 28

    如何防止NN忘记旧数据

  29. 29

    输入如何转换为NN的输入单元

热门标签

归档