将张量从NHWC格式转换为NCHW格式,反之亦然的最佳方法是什么?
是否有专门用于此操作的操作,还是我需要使用split / concat类型操作的某种组合?
您需要做的只是将尺寸从NHWC更改为NCHW(或者相反)。
每个字母的含义可能有助于理解:
图像的形状是(N, H, W, C)
,我们希望输出具有形状(N, C, H, W)
。因此,我们需要tf.transpose
选择适当的排列方式进行应用perm
。
返回的张量的尺寸
i
将对应于输入尺寸perm[i]
perm[0] = 0 # output dimension 0 will be 'N', which was dimension 0 in the input
perm[1] = 3 # output dimension 1 will be 'C', which was dimension 3 in the input
perm[2] = 1 # output dimension 2 will be 'H', which was dimension 1 in the input
perm[3] = 2 # output dimension 3 will be 'W', which was dimension 2 in the input
在实践中:
images_nhwc = tf.placeholder(tf.float32, [None, 200, 300, 3]) # input batch
out = tf.transpose(x, [0, 3, 1, 2])
print(out.get_shape()) # the shape of out is [None, 3, 200, 300]
图像的形状是(N, C, H, W)
,我们希望输出具有形状(N, H, W, C)
。因此,我们需要tf.transpose
选择适当的排列方式进行应用perm
。
返回的张量的尺寸
i
将对应于输入尺寸perm[i]
perm[0] = 0 # output dimension 0 will be 'N', which was dimension 0 in the input
perm[1] = 2 # output dimension 1 will be 'H', which was dimension 2 in the input
perm[2] = 3 # output dimension 2 will be 'W', which was dimension 3 in the input
perm[3] = 1 # output dimension 3 will be 'C', which was dimension 1 in the input
在实践中:
images_nchw = tf.placeholder(tf.float32, [None, 3, 200, 300]) # input batch
out = tf.transpose(x, [0, 2, 3, 1])
print(out.get_shape()) # the shape of out is [None, 200, 300, 3]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句