numpy Torch 视觉模型中 Torch 、Tensor、置换的使用

ar5n3qh5  于 2023-01-02  发布在  其他
关注(0)|答案(1)|浏览(159)

我正在使用torchvision的Resnet50分类模型,默认情况下接受图像作为输入。我希望使模型接受numpy文件(.npy)作为输入。我知道这两者具有不同的维度,因为numpy数据为

[batch_size, depth, height, width, channels]

代替

[batch_size, channels, depth, height, width].

this answer的基础上,我可以使用置换函数来改变维度的顺序,但是,我找不到任何解决方案或线索来说明如何在torchvision模型中实现这一点。

bttbmeg0

bttbmeg01#

假设你有一个Tensorx,其维数为

[batch_size, depth, height, width, channels]

你想得到一个Tensory,其维数为

[batch_size, channels, depth, height, width]

permute()方法对这些维进行重新排序。您必须指定原始维的重新排序顺序,以获得新维,即

y = x.permute([0, 4, 1, 2, 3])

如果我们对此进行分析,在原始Tensorx中,维数计算为

[batch_size, depth, height, width, channels]
 0           1      2       3      4

在新的Tensor中,我们得到

[batch_size, channels, depth, height, width]
 0           4         1      2       3

我们需要传递给permute()
或者,您也可以只使用einsum()函数,在该函数中,您可以只输入签名,这要直观得多。

y = torch.einsum('b d h w c -> b c d h w', x)

相关问题