Я пытаюсь использовать SparseTensor, чтобы представить весовые переменные в полностью подключенном слое.
Однако, похоже, что TensorFlow 0.8 не позволяет использовать SparseTensor как tf.Variable.
Есть ли способ обойти это?Использование SparseTensor в качестве обучаемой переменной?
Я попытался
import tensorflow as tf
a = tf.constant(1)
b = tf.SparseTensor([[0,0]],[1],[1,1])
print a.__class__ # shows <class 'tensorflow.python.framework.ops.Tensor'>
print b.__class__ # shows <class 'tensorflow.python.framework.ops.SparseTensor'>
tf.Variable(a) # Variable is declared correctly
tf.Variable(b) # Fail
Кстати, моя конечная цель использования SparseTensor является постоянно маскировать некоторые из соединений в плотной форме. Таким образом, эти обрезанные соединения: игнорируются при вычислении и применении градиентов.
В моей текущей реализации MLP, SparseTensor и его разреженной форме matmul Операции успешно завершаются выводами вывода. Тем не менее, веса, объявленные с использованием SparseTensor, не проходят обучение, так как пройдут учебные шаги.
Благодарим за быстрый ответ.Итак, чтобы обучить разреженный тензор или сохранить его в сериализованном виде, в текущей версии (0.8) нет прямого метода, верно? Теперь я просто пытаюсь сохранить разреженную матрицу как плотную форму каждого индекса, значений и формы. А затем загрузите его в SparseTensor (idx.eval(), value.eval(), shape.eval()). Есть ли лучшее обходное решение? –