Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tensorflow中,如何仅对给定的索引将矩阵乘以标量?_Python_Numpy_Tensorflow - Fatal编程技术网

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

Python 在Tensorflow中,如何仅对给定的索引将矩阵乘以标量?,python,numpy,tensorflow,Python,Numpy,Tensorflow,我试图找到一种有效的方法,将给定标量的矩阵中的特定值相乘。让我们看一个简单的例子 给定1到10之间的值矩阵M,如下所示: 我想把每个值小于3的单元格乘以2。现在我知道我可以用tf在tensorflow中找到所有值为1的项的坐标。其中(M

我试图找到一种有效的方法,将给定标量的矩阵中的特定值相乘。让我们看一个简单的例子

给定1到10之间的值矩阵M,如下所示:

我想把每个值小于3的单元格乘以2。现在我知道我可以用
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数组,做这个数学运算,然后再回到张量。你认为有没有一种方法可以保持在张量流域内?