PyTorch的{{1}}函数仅转换2D输入。文档为here。
另一方面,Tensorflow的torch.transpose
功能允许您转置tf.transpose
任意尺寸的张量。
有人可以解释为什么PyTorch没有/不能具有N维转置功能吗?这是否是由于PyTorch中的计算图构造与Tensorflow的Define-then-Run范例的动态特性?
答案 0 :(得分:9)
在pytorch中它被简单地称为不同。 torch.Tensor.permute允许您在TtororFlow中像tf.transpose一样交换pytorch中的维度。
作为如何将4D图像张量从NHWC转换为NCHW的示例(未经测试,因此可能包含错误):
for(i in 1:nrow(df)){
df$distance[i] <- sqrt(abs(df$count1[i] - df$count2[i]) + abs(df$count2[i] - df$count3[i]))
}
答案 1 :(得分:2)
就像Pytorch 0.3中的以下内容一样:
x = torch.rand(2, 3, 4)
x = x.permute(2, 1, 0) # transpose size to 4x3x2
答案 2 :(得分:0)
Einops
支持任意数量维的详细换位:
from einops import rearrange
x = torch.zeros(10, 100, 100, 3)
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)