如何在pytorch中修改张量数据维度,谢谢

时间:2019-12-13 18:52:23

标签: python opencv pytorch

我想将张量数据转换为numpy数据并通过Opencv保存,但是opencv要求数据维必须像这样的样式[1,something,something,something],但是我的张量数据是一个混合数据,它大小为[30,某物,某物,某物],如何在pytorch中修改数据维度。

PS,pytorch中有什么功能可以将数据保存为二进制图片?我使用“ save_image”命令将张量数据保存到所有数字均为1或0的图片中,但图片显示仍为灰色样式。也许还有其他方法可以将张量数据保存为二进制图片,请告诉我。

               def save_image_tensor2cv2(input_tensor, filename):
                   assert (len(input_tensor.shape) == 4) and input_tensor.shape[0] == 1)
                   input_tensor = input_tensor.clone().detach()
                   input_tensor = input_tensor.to(torch.device('cpu'))
                   input_tensor = input_tensor.squeeze()
                   input_tensor = input_tensor.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).type(torch.uint8).numpy()
                   cv2.imwrite(filename, input_tensor)

1 个答案:

答案 0 :(得分:0)

batch = next(iter(dataloader_test))

batch.shape
torch.Size([4, 3, 160, 160])

np.transpose(batch.numpy(), (0,2,3,1)).shape
(4, 160, 160, 3)

image = np.transpose(batch.numpy(), (0,2,3,1))

cv2.imwrite("image.png", image[0])

您可能需要先对数据进行非规范化,然后再保存。