【发布时间】:2018-01-03 01:43:28
【问题描述】:
当计算涉及稀疏张量时,计算关于变量的损失梯度返回None。
这是一个最小的例子:
x = tf.placeholder(tf.float32, shape=[1,2])
w = tf.get_variable("w", [2, 3])
y = tf.matmul(x, w)
sparse_loss = tf.SparseTensor([[0], [2], [4]], tf.reshape(y, [-1]), [5])
dense_loss = tf.sparse_tensor_to_dense(sparse_loss)
sparse_grads = tf.gradients(sparse_loss.values, w)
print(sparse_grads)
dense_grads = tf.gradients(dense_loss, w)
print(dense_grads)
打印出来
[<tf.Tensor 'gradients/MatMul_grad/MatMul_1:0' shape=(2, 3) dtype=float32>]
[None]
表明梯度可用于稀疏张量值,但在转换回密集张量后不可用。
这发生在没有 GPU 的 Ubuntu Linux 上的 TensorFlow 1.2 上。
【问题讨论】:
标签: tensorflow