我有一批图像表示为形状的TensorFlow张量(比如说张量1)。(2,1024,1024,1)
属于 (B,H,W,C)
哪儿 B
是指批次规模2。H
和 W
是图像尺寸1024和 C
是通道的数量。该张量的每个元素(即每个像素)都存储了一个元组。(a,b)
其中既 a
和 b
属于 0
和 255
.
我有另一个形状的张量(比如说张量2)。(256,256)
的每个元素都存储一个介于 0
和 255
.
鉴于这种设置,我有以下问题。
我希望用张量2中对应的元素值替换张量1中的每个元素值。例如,让我们假设由索引给定的元素 (1,200,500,1)
在张量1中包含的值 (100,20)
. 我想查找存储在Tensor 2中的像素位置的值。(100,200)
并修改该条目在 (1,200,500,1)
与此值。
如何才能以最有效的方式对整个批次进行?
如果有不清楚的地方,请告诉我。我是TensorFlow的初学者,因此希望得到任何帮助。
用张量2中相应的元素值替换张量1中的元素值,请尝试这样做
tensor1 = tf.Variable(tf.zeros((2,1024,1024,1)), trainable=False)
tensor2 = tf.constant(np.random.randint(0,255, (255,255,1)), dtype='float32')
tensor12 = tensor1[1,200,500].assign(tensor2[100,200])
在这个例子中,你将张量1的位置(1,200,500,1)的元素替换为张量2的位置(100,200)的元素。
batch_dim = 2
tensor1 = tf.Variable(tf.zeros((batch_dim,1024,1024,1)), trainable=False)
tensor2 = tf.constant(np.random.randint(0,255, (1,255,255,1)), dtype='float32')
tensor12 = tensor1[:,:tensor2.shape[1],:tensor2.shape[2]].assign(tf.repeat(tensor2, batch_dim, axis=0))
使用这些行,您可以将 tensor2 的所有值分配到 tensor1 中的第一个 (255,255) 位置,用于所有批次的样本。