创建tf.constant给定的索引和值

时间:2018-08-01 22:38:19

标签: python tensorflow

我想改善当前代码,以提高GPU上的执行性能,所以我将替换它不支持的操作,以避免将它们委托给CPU。

此操作之一是tf.sparse_to_dense。因此,是否有某种方法可以根据其索引和值创建张量(常量),就像它是稀疏张量一样?

我通过一些变通方法使其工作,例如使用numpy获取数组,然后使用tensor = tf.constant(numpyarray)创建它,但我一直在寻找“仅Tensorflow”方法。

1 个答案:

答案 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 \
           )