是否存在稀疏版本的tf.multiply?

时间:2017-06-28 18:37:23

标签: python tensorflow

Tensorflow是否具有稀疏元素乘法? 即稀疏版本的tf.multiply()

我只找到了tf.sparse_tensor_dense_matmul(),但它不是元素乘法。

1 个答案:

答案 0 :(得分:3)

您可能正在寻找的功能是:__mul__

官方文档中的其他详细信息:

与稀疏张量中的隐含零元素相对应的输出位置将为零(即,不会占用存储空间),无论密集张量的内容如何(即使它是+ / -INF和INF * 0 == NaN)。

限制:此操作系统仅向稀疏侧广播密集侧,但不向另一方向广播。

示例:

SELECT * FROM `photos` WHERE `user_id` = <user_id>

输出:

sp_mat = tf.SparseTensor([[0,0],[0,2],[1,2],[2,1]], np.ones(4), [3,3])
const1 = tf.constant([[1,2,3],[4,5,6],[7,8,9]], dtype=tf.float64)
const2 = tf.constant(np.array([1,2,3]),dtype=tf.float64)

elementwise_result = sp_mat.__mul__(const1)
broadcast_result   = sp_mat.__mul__(const2)

print("Sparse Matrix:\n",tf.sparse_tensor_to_dense(sp_mat).eval())
print("\n\nElementwise:\n",tf.sparse_tensor_to_dense(elementwise_result).eval())
print("\n\nBroadcast:\n",tf.sparse_tensor_to_dense(broadcast_result).eval())