我想改善当前代码,以提高GPU上的执行性能,所以我将替换它不支持的操作,以避免将它们委托给CPU。
此操作之一是tf.sparse_to_dense。因此,是否有某种方法可以根据其索引和值创建张量(常量),就像它是稀疏张量一样?
我通过一些变通方法使其工作,例如使用numpy获取数组,然后使用tensor = tf.constant(numpyarray)
创建它,但我一直在寻找“仅Tensorflow”方法。
答案 0 :(得分:0)
tf.constant
当前不支持坐标格式的实例化(索引和值),因此numpy / scipy变通方法实际上不是一个坏方法:
import scipy.sparse as sps
A = sps.coo_matrix((values, (indices[0,:], indices[1,:])), shape=your_shape)
tensor_A = tf.constant(A.to_dense())
如果可以选择使用不可训练的tf.Variable
(有关与tf.constant
的区别,请参见here),则可以使用tf.sparse_to_dense
tensor_A = tf.Variable( \
tf.sparse_to_dense(indices, your_shape, values), \
trainable=False \
)