Мы попытались использовать tf.nn.embedding_lookup
, и он работает. Но для этого нужны плотные входные данные, и теперь нам нужен tf.nn.embedding_lookup_sparse
для разреженного ввода.Как использовать tf.nn.embedding_lookup_sparse в TensorFlow?
Я написал следующий код, но получаю некоторые ошибки.
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
«s, я более смущен, почему я получил этот результат, если давать разреженный вес, особенно, почему мы получили что-то вроде embedding_weights[0][3]
где 3
не появились в коде выше.
Пожалуйста, дайте мне знать, если мой ответ решил проблему :) – rvinas
Благодарности @rvinas. Я еще не понял это после прочтения модульного теста safe_embedding_lookup_sparse'. Я обновил вопрос и хотел бы вы объяснить нам код? – tobe
Пожалуйста, не могли бы вы предоставить необработанный код? – rvinas