如何将PyTorch张量转换为Numpy的ndarray?

如何将PyTorch张量转换为Numpy的ndarray?,numpy,pytorch,reshape,numpy-ndarray,Numpy,Pytorch,Reshape,Numpy Ndarray,我的张量的形状是火炬。大小[3320480] 张量是 tensor([[[0.2980, 0.4353, 0.6431, ..., 0.2196, 0.2196, 0.2157], [0.4235, 0.4275, 0.5569, ..., 0.2353, 0.2235, 0.2078], [0.5608, 0.5961, 0.5882, ..., 0.2314, 0.2471, 0.2588], ..., ...,

我的张量的形状是火炬。大小[3320480]

张量是

tensor([[[0.2980, 0.4353, 0.6431,  ..., 0.2196, 0.2196, 0.2157],
         [0.4235, 0.4275, 0.5569,  ..., 0.2353, 0.2235, 0.2078],
         [0.5608, 0.5961, 0.5882,  ..., 0.2314, 0.2471, 0.2588],
         ...,

         ...,
         [0.0588, 0.0471, 0.0784,  ..., 0.0392, 0.0471, 0.0745],
         [0.0275, 0.1020, 0.1882,  ..., 0.0196, 0.0157, 0.0471],
         [0.1569, 0.2353, 0.2471,  ..., 0.0549, 0.0549, 0.0627]]])
我想我需要320,480,3型的

张量应该是这样的

array([[[0.29803923, 0.22352941, 0.10980392],
        [0.43529412, 0.34117648, 0.20784314],
        [0.6431373 , 0.5254902 , 0.3764706 ],
        ...,

        ...,
        [0.21960784, 0.13333334, 0.05490196],
        [0.23529412, 0.14509805, 0.05490196],
        [0.2627451 , 0.1764706 , 0.0627451 ]]], dtype=float32)

首先将设备更改为主机/cpu和.cpu(如果它在cuda上),然后使用.detach从计算图中分离,然后使用.numpy转换为numpy

t = torch.tensor(...).reshape(320, 480, 3)
numpy_array = t.cpu().detach().numpy()

我找到了另一个解决办法

t = torch.tensor(...).permute(1, 2, 0).numpy()

从pytorch提供的创建数组的方法开始。一旦你有了一个,你就可以执行必要的np.transpose了。嗨,tensor.permute和np.transpose有什么区别?TIAIt给了我类似于这个数组的东西[[0.49019608,0.4745098,0.42352942,…,0.23921569,0.24705882,0.2588234],…………这只是将张量转换为数组。啊,你也要重塑它吗?是的,我需要使它320,480,3毫米好。这很奇怪,因为320*480*3=3*320*480=460800。你确定重塑了正确的张量吗?