gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:24:12 25 4
gpt4 key购买 nike

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

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

和指示此矩阵上一些“框”(通过左上角和右下角顶点,可能重叠)的四分体张量:

(第一行,第一列,第二行,第二列)

此处,[first_row:second_row, first_column,second_column]矩阵 上形成一个框。

问题是:如何使用切片 [first_row] 将图片上的所有“盒装值”从 0 分配/更改为 1 :second_row, first_column,second_column] 或其他 tensorflow 函数?

更新:

输入:

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

first_row = tf.constant([0,2])
first_column = tf.constant([2,1])
second_row = tf.constant([3,3])
second_column = tf.constant([3,3])

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

array([[0, 0, 1, 1, 0],
[0, 0, 1, 1, 0],
[0, 1, 1, 1, 0],
[0, 1, 1, 1, 0]])

最佳答案

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

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(tensor[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]]

当我无法确保分配的左侧在形状方面与右侧不匹配时,我会收到此错误。这应该对您有所帮助。

sliced l-value shape [1,2] does not match r-value shape [1,1]

例子 print(sess.run( tf.assign(tensor[0:2,2:4] , [[9,9],[9,9]] )))打印

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

关于 tensorflow 通过(不同范围的 2d)切片列表更改/分配矩阵元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55570319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com