加载图片数据集,使用ToTensor后,从dataloader中取出数据,发现取出来的数据范围为[0,1]

本文介绍了如何使用PyTorch中的torchvision.datasets.MNIST加载数据集,并探讨了DataLoader如何在加载过程中自动应用transform,将数据类型从uint8转换为float32。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例如加载MNIST数据集:

import torchvision.datasets
import numpy as np
import torch
from torch.utils.data import DataLoader

# preprocess transform
initial_process = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])

# train set
train_dataset = torchvision.datasets.MNIST(root="./dataset",download=True,transform=torchvision.transforms.ToTensor(),
                                           train=True)

# data set
test_dataset = torchvision.datasets.MNIST(root="./dataset",download=True,transform=initial_process,
                                          train=False)


train_loader = DataLoader(
    train_dataset, batch_size=1, shuffle=True
)

test_loader = DataLoader(
    test_dataset, batch_size=1,shuffle=False
)


# 打印数据集长度
print("训练集长度为",train_dataset.__len__())
print("测试集长度为",test_dataset.__len__())

# 打印数据集标准差以及均值
print(train_dataset.data.dtype)
print(train_dataset.data.float().mean())
print(train_dataset.data.float().std())


#
for data,targets in train_loader:
    print(data.dtype)
    print(targets)

会发现,直接打印数据集data的dtype,发现为torch.uint8[0,255]

但是从dataloader中取出来之后,数据类型就变为了torch.float32[0,1]  

所以估计DataLoader会调用dataset的transform对dataset进行变换

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值