在TensorFlow中对张子进行批量操作。

问题描述 投票:0回答:1

我有一批图像表示为形状的TensorFlow张量(比如说张量1)。(2,1024,1024,1) 属于 (B,H,W,C) 哪儿 B 是指批次规模2。HW 是图像尺寸1024和 C 是通道的数量。该张量的每个元素(即每个像素)都存储了一个元组。(a,b) 其中既 ab 属于 0255.

我有另一个形状的张量(比如说张量2)。(256,256) 的每个元素都存储一个介于 0255.

鉴于这种设置,我有以下问题。

我希望用张量2中对应的元素值替换张量1中的每个元素值。例如,让我们假设由索引给定的元素 (1,200,500,1) 在张量1中包含的值 (100,20). 我想查找存储在Tensor 2中的像素位置的值。(100,200) 并修改该条目在 (1,200,500,1) 与此值。

如何才能以最有效的方式对整个批次进行?

如果有不清楚的地方,请告诉我。我是TensorFlow的初学者,因此希望得到任何帮助。

python tensorflow batch-processing tensor
1个回答
0
投票

用张量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) 位置,用于所有批次的样本。

© www.soinside.com 2019 - 2024. All rights reserved.