【发布时间】:2020-05-15 15:05:22
【问题描述】:
我一直在图像数据集上尝试一些图像识别神经网络。我的图像在形状为 [39209, 30, 30, 3] 的数组(或张量)中。但是,对于我在 github 上找到的一些代码,我的图像必须是数组形状 [39209, 3, 30, 30]。我以为会有一种快速的方法来转换数组,但事实证明这非常困难。有谁知道这是否可行?
【问题讨论】:
标签: python arrays image tensor
我一直在图像数据集上尝试一些图像识别神经网络。我的图像在形状为 [39209, 30, 30, 3] 的数组(或张量)中。但是,对于我在 github 上找到的一些代码,我的图像必须是数组形状 [39209, 3, 30, 30]。我以为会有一种快速的方法来转换数组,但事实证明这非常困难。有谁知道这是否可行?
【问题讨论】:
标签: python arrays image tensor
你可以使用torch.transposehttps://pytorch.org/docs/master/generated/torch.transpose.html
import torch
a = torch.ones((10, 30, 30, 3))
b = torch.transpose(a, 1, -1)
print(b.shape)
torch.Size([10, 3, 30, 30])
numpy也有transposehttps://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html
【讨论】:
你可以使用torch.permute():
x = torch.randn(1, 32, 32, 3).float()
x.shape
torch.Size([1, 32, 32, 3])
y = x.permute(0, 3, 1, 2)
y.shape
torch.Size([1, 3, 32, 32])
【讨论】: