Конкретная ошибка, которую вы видели, это попытка сказать, что ваш output_shape
должен быть 1-D Тензор, как (32,)
, а не 0-D Тензор, как у вас там, 32
.Но я беспокоюсь, что это простое изменение не решит вашу проблему.
Я не понимаю, почему ваш x
является трехмерным тензором, когда вы сказали, что у вас всего 10 индексов.Технически говоря, sparse_indices
может быть двумерным тензором не более .Мое понимание tf.sparse_to_dense
заключается в том, что это очень похоже на создание разреженного тензора.Так что число 2
в вашем (10, 2)
уже решено, что тензор вывода будет 2-D.None
, как и вариант размера выборки, должен обрабатываться по-разному.
Следуя этой логике, вы можете обнаружить еще одну проблему: output_shape
должно быть (32, 32)
, а не (32,)
, как упомянуто простое исправление.выше.Длина кортежа должна соответствовать форме (в частности, последней оси) sparse_indices
.
Учитывая все это, я думаю, что MVCE, только тензорный поток, имитирующий ваш пример, может быть:
import numpy as np
import tensorflow as tf
x = tf.placeholder(tf.float32, shape=(10, 2))
idx = tf.cast(x*15.5+15.5, tf.int32)
z = tf.sparse_to_dense(idx, (32, 32), 1.0, 0.0, name='sparse_tensor')
with tf.Session() as sess:
print(sess.run(
z, feed_dict={x: np.arange(20, dtype=np.float32).reshape((10, 2))/20})
)
Просто для того, чтобы указать: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Функция будет удалена в следующей версии. Инструкции по обновлению: создайте tf.sparse.SparseTensor и используйте взамен tf.sparse.to_dense. "