如何在TensorFlow中使用稀疏张量进行计算?

8
我想在TensorFlow中以批处理的方式实现DNC实现中的此公式。
其中:
L_t[i,j] = (1 - w_t[i] - w_t[j]) * L_{t-1}[i,j] + w_t[i] * p_t[j]
w和r是N维实数向量,L是一个N*N的[0,1]矩阵。
使用批处理的dense tensor非常直观。
# w [B, N], p [B, N], L [B, N, N], B=batch_size
dot_prod = tf.batch_matmul(tf.expand_dims(w, axis=2), tf.expand_dims(p, axis=1))
one_prod = 1 - tf.expand_dims(w, 1) - tf.expand_dims(w, 2) 
L =  one_prod * pre_L + dot_prod

有没有使用稀疏张量实现这个的方法?wpL是稀疏的,但TensorFlow在稀疏批次乘法和稀疏索引方面欠缺。


tf.matmul中的选项a_is_sparseb_is_sparse是什么意思?https://www.tensorflow.org/api_docs/python/math_ops/matrix_math_functions#matmul - chris
1
很遗憾,这不支持批处理。 - spreisel
1个回答

0

尝试将其转换为密集张量:

tf.sparse_to_dense( sparse_indices, output_shape, sparse_values, default_value=0, validate_indices=True, name=None )

使用示例: mat = tf.sparse_to_dense(inds, [n, class_size], vals)

请参阅此处的文档:https://www.tensorflow.org/api_docs/python/tf/sparse_to_dense


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接