tensorflow通过(2d的不同范围)切片列表更改/分配矩阵元素值

tensorflow通过(2d的不同范围)切片列表更改/分配矩阵元素值,tensorflow,matrix,slice,Tensorflow,Matrix,Slice,我有一个零矩阵(我们可以将其视为图片): matrix=tf.zeros(name=“matrix”,shape=(4,5),dtype=tf.int32) 四分体的张量表示这个矩阵上的一些“盒子”(通过左上角和右下角顶点,可能重叠): (第一行、第一列、第二行、第二列) 这里,[第一行:第二行、第一列、第二列]在矩阵上形成一个框 问题是:如何使用切片[第一行:第二行、第一列、第二列]或其他tensorflow函数,将图片上的所有“装箱值”从0分配/更改为1 更新: 输入: matrix=tf.

我有一个零矩阵(我们可以将其视为图片):

matrix=tf.zeros(name=“matrix”,shape=(4,5),dtype=tf.int32)

四分体的张量表示这个矩阵上的一些“盒子”(通过左上角和右下角顶点,可能重叠):

(第一行、第一列、第二行、第二列)

这里,
[第一行:第二行、第一列、第二列]
矩阵上形成一个框

问题是:如何使用切片
[第一行:第二行、第一列、第二列]
或其他tensorflow函数,将图片上的所有“装箱值”从
0
分配/更改为
1

更新

输入:

matrix=tf.zeros(name=“matrix”,shape=(4,5),dtype=tf.int32)

预期输出(通过方框示例
(0,2,3,3)
(2,1,3,3)
):


这可能会有所帮助。但如果没有,你可以澄清你的问题

import tensorflow as tf

tensor = tf.Variable(
    [[0, 0, 1, 1, 0],
     [0, 0, 1, 1, 0],
     [0, 1, 1, 1, 0],
     [0, 1, 1, 1, 0]])


with tf.Session() as sess :
  sess.run( tf.global_variables_initializer() )
  print(sess.run( tf.assign(tensor[0:1,2:3] , [[9]] )))
输出是这样的

[[0 0 9 1 0]
 [0 0 1 1 0]
 [0 1 1 1 0]
 [0 1 1 1 0]]
如果您将最后一行更改为
print(sess.run(tf.assign(张量[0:1,2:4],[9,9]))

[[0 0 9 9 0]
 [0 0 1 1 0]
 [0 1 1 1 0]
 [0 1 1 1 0]]
当我不能确保作业的左侧在形状上与右侧不匹配时,我会得到这个错误。这应该对你有帮助

切片的l值形状[1,2]与r值形状[1,1]不匹配

示例
print(sess.run(tf.assign(张量[0:2,2:4],[9,9],[9,9]]))
prints

[[0 0 9 9 0]
 [0 0 9 9 0]
 [0 1 1 1 0]
 [0 1 1 1 0]]

你能给出输入和输出的例子吗?您可以更新您的问题。非常感谢!我通过指定左右值的维度来解决它们的一致性问题。
[[0 0 9 9 0]
 [0 0 1 1 0]
 [0 1 1 1 0]
 [0 1 1 1 0]]
[[0 0 9 9 0]
 [0 0 9 9 0]
 [0 1 1 1 0]
 [0 1 1 1 0]]