问题描述
我有一个大小为 (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 中的数据类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!