Python 在Tensorflow中,如何仅对给定的索引将矩阵乘以标量?
我试图找到一种有效的方法,将给定标量的矩阵中的特定值相乘。让我们看一个简单的例子 给定1到10之间的值矩阵M,如下所示: 我想把每个值小于3的单元格乘以2。现在我知道我可以用Python 在Tensorflow中,如何仅对给定的索引将矩阵乘以标量?,python,numpy,tensorflow,Python,Numpy,Tensorflow,我试图找到一种有效的方法,将给定标量的矩阵中的特定值相乘。让我们看一个简单的例子 给定1到10之间的值矩阵M,如下所示: 我想把每个值小于3的单元格乘以2。现在我知道我可以用tf在tensorflow中找到所有值为1的项的坐标。其中(M
tf在tensorflow中找到所有值为1的项的坐标。其中(M<3)
,但我正在努力找到一个好的可伸缩解决方案来实现我想要的。转换应该是这样的:
如何利用此信息仅将给定坐标处的单元格乘以2
请记住,我的矩阵可能比3x3大,我发现了如何在tensorflow中实现这一点,而不必做任何从numpy到tensorflow的转换,反之亦然
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]])
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
)
@Josh answer帮助我找到了正确的方向我发现了如何在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
)
@Josh answer帮助我找到了正确的方向,但这并不完全是我想要的,你将值2赋给所有为1的元素,但我想将这些值乘以2。现在使用1只是一个例子,它可以是5,也可以是8。我不知道那是什么。我要重新措辞我的问题,让它更清楚。谢谢你的回复!我猜如果有更新的问题,它应该是
M[M<3]*=2
。是的,这应该行得通。格式就是[]=
我想这实际上是可行的,唯一的问题是我必须把它从张量转换成numpy数组,做这个数学运算,然后再回到张量。你认为有一种方法可以保持在tensorflow域内吗?那是可行的,但这并不完全是我想要的,你将值2赋给所有为1的元素,但我想将这些值乘以2。现在使用1只是一个例子,它可以是5,也可以是8。我不知道那是什么。我要重新措辞我的问题,让它更清楚。谢谢你的回复!我猜如果有更新的问题,它应该是M[M<3]*=2
。是的,这应该行得通。格式就是[]=
我想这实际上是可行的,唯一的问题是我必须把它从张量转换成numpy数组,做这个数学运算,然后再回到张量。你认为有没有一种方法可以保持在张量流域内?