PyTorch中的ToTensor

PyTorch中的ToTensor

💡 原文英文,约900词,阅读约需3分钟。
📝

内容提要

本文介绍了如何将PIL图像转换为PyTorch张量并进行缩放。`ToTensor()`已被弃用,建议使用`Compose(transforms=[ToImage(), ToDtype(dtype=torch.float32, scale=True)])`。PIL图像和ndarray的值被缩放到[0.0, 1.0]范围内。

🎯

关键要点

  • 本文介绍了如何将PIL图像转换为PyTorch张量并进行缩放。
  • `ToTensor()`已被弃用,建议使用`Compose(transforms=[ToImage(), ToDtype(dtype=torch.float32, scale=True)])`。
  • PIL图像和ndarray的值被缩放到[0.0, 1.0]范围内。
  • PIL图像在特定模式下会被缩放到[0.0, 1.0]。
  • ndarray在uint8格式下会被缩放到[0.0, 1.0]。
  • PIL图像、图像或张量/ndarray的类型要求。
  • 张量可以是0D或多维,ndarray必须是2D或3D。
  • 示例代码展示了如何使用`ToImage()`和`ToTensor()`进行数据转换。
  • 使用`OxfordIIITPet`数据集进行示例,展示了数据点的数量和转换后的张量形状。
  • 展示了如何使用`matplotlib`可视化转换后的张量图像。
  • 提供了多种数据类型的转换示例,包括整数、浮点数、复数和布尔值。

延伸问答

如何将PIL图像转换为PyTorch张量?

可以使用`Compose(transforms=[ToImage(), ToDtype(dtype=torch.float32, scale=True)])`来转换PIL图像为PyTorch张量。

ToTensor()在PyTorch中有什么变化?

`ToTensor()`已被弃用,建议使用`Compose`替代。

PIL图像和ndarray的值如何缩放?

PIL图像和ndarray的值被缩放到[0.0, 1.0]范围内,PIL图像在特定模式下和uint8格式的ndarray都会进行此缩放。

在PyTorch中,张量和ndarray的维度要求是什么?

张量可以是0D或多维,而ndarray必须是2D或3D。

如何使用matplotlib可视化转换后的张量图像?

可以使用`plt.imshow()`函数来可视化转换后的张量图像,但需确保张量形状正确。

OxfordIIITPet数据集的转换示例是什么?

示例中展示了如何使用`ToImage()`和`ToTensor()`对OxfordIIITPet数据集进行转换,数据点数量为3680。

➡️

继续阅读