本文介绍了类型错误:无法处理 PIL Image 中的数据类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个大小为 (4,3,224,224) 的 Pytorch 张量.当我尝试将第一个张量转换为 Image 对象时,它说:

I have a Pytorch tensor of size (4,3,224,224). When I am trying to convert the first tensor into an Image object, it says:

TypeError: Cannot handle this data type

我运行了以下命令:

img = Image.fromarray(data[0][i].numpy().astype(np.uint8))

其中数据是 Pytorch 张量

where data is the Pytorch tensor

我尝试了其他解决方案,但找不到任何解决方案.

I tried other solutions but couldn't find any solution.

请推荐!!

推荐答案

您正在尝试将 3x224x224 np.array 转换为图像,但是 PIL.Image 期望它的图像的形状为 224x224x3,因此您会收到错误消息.
如果您转置张量以使通道维度成为最后一个(而不是第一个),则应该没有问题

You are trying to convert 3x224x224 np.array into an image, but PIL.Image expects its images to be of shape 224x224x3, threfore you get an error.
If you transpose your tensor so that the channel dimension will be the last (rather than the first), you should have no problem

img = Image.fromarray(data[0][i].transpose(0,2).numpy().astype(np.uint8))

这篇关于类型错误:无法处理 PIL Image 中的数据类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 04:21