pytorch的 torch.transpose
函数仅转移2D输入。文档在这里。
另一方面,TensorFlow的tf.transpose
功能允许您转换N
任意维度的张量。
有人可以解释为什么pytorch不能/不能具有n维度转置功能?这是由于Pytorch与Tensorflow的定义 - 然后运行范式的计算图构造的动态性质?
在pytorch中简单地称为不同。torch.tensor.permute将允许您在pytorch中交换尺寸。
作为如何将4D图像张量从NHWC转换为NCHW的示例(未测试,可能包含错误(:
>>> img_nhwc = torch.randn(10, 480, 640, 3)
>>> img_nhwc.size()
torch.Size([10, 480, 640, 3])
>>> img_nchw = img_nhwc.permute(0, 3, 1, 2)
>>> img_nchw.size()
torch.Size([10, 3, 480, 640])
Einops
支持任意尺寸数量的冗长换位:
from einops import rearrange
x = torch.zeros(10, 3, 100, 100)
y = rearrange(x, 'b c h w -> b h w c')
x2 = rearrange(y, 'b h w c -> b c h w') # inverse to the first
(并且相同的代码也适用于TensorFow(