如何仅对Tensorflow中的给定索引将矩阵乘以标量?

时间:2018-07-27 19:35:33

标签: python numpy tensorflow

我正在尝试找到一种有效的方法来针对给定的标量将矩阵内的特定值相乘。让我们来看一个简单的例子。

给出一个介于1到10之间的值的矩阵M,如下所示:

enter image description here

我想将每个值小于3的像元乘以2。现在我知道我可以使用tf.where(M < 3)在tensorflow中找到所有值为1的项的坐标,但我一直在努力寻找一个好的可扩展的解决方案,以实现我想要的。转换应该是这样的:

enter image description here

如何利用此信息仅将给定坐标处的像元乘以2?

请记住,我的矩阵可能比3x3大

2 个答案:

答案 0 :(得分:2)

M = np.array([[1, 5, 8],[2, 2, 2], [9, 7, 6]])
M[M==1] = 2
print(M)

array([[2, 5, 8],
       [2, 2, 2],
       [9, 7, 6]])

答案 1 :(得分:0)

我发现了如何在tensorflow中做到这一点,而不必进行从numpy到tensorflow的任何转换,反之亦然。

my_matrix = tf.constant([[1, 5, 8], [2, 2, 2], [9, 7, 6]])
result = tf.where(
    tf.less(my_matrix, tf.constant(3)),
    tf.scalar_mul(2, my_matrix),
    my_matrix
)

@乔什的回答帮助我寻找了正确的方向