以下是一个示例代码,展示了如何在不使用数据加载器的情况下转换每个训练点:
import torch
from torchvision import transforms
# 假设有一个数据集,包含图像和标签
dataset = [(torch.randn((3, 32, 32)), 0), (torch.randn((3, 32, 32)), 1), ...]
# 定义转换函数
transform = transforms.Compose([
transforms.ToPILImage(), # 将Tensor转换为PIL图像
transforms.Resize((64, 64)), # 调整图像大小
transforms.ToTensor(), # 将PIL图像转换为Tensor
])
# 创建一个空的列表,用于存储转换后的数据
transformed_dataset = []
# 遍历数据集中的每个样本
for data, label in dataset:
# 对每个样本应用转换函数
transformed_data = transform(data)
transformed_dataset.append((transformed_data, label))
# 输出转换后的数据集
for transformed_data, label in transformed_dataset:
print(transformed_data.shape, label)
在这个示例中,我们首先定义了一个转换函数transform
,该函数将图像从Tensor转换为PIL图像,然后调整图像大小,并最后将图像转换回Tensor。然后,我们创建一个空的列表transformed_dataset
,用于存储转换后的数据。
接下来,我们遍历数据集中的每个样本,对每个样本应用转换函数,并将转换后的样本和标签添加到transformed_dataset
中。
最后,我们遍历transformed_dataset
,打印每个转换后的样本的形状和标签。