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

例如加载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进行变换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,您需要创建一个自定义的Dataset类来加载您的数据集。您可以使用torchvision.datasets.ImageFolder来从文件夹加载图像,也可以使用torch.utils.data.Dataset类来加载图像。 以下是一个示例代码,可以将格拉姆角场图片和对应的标签转换为torch.Tensor格式的数据集: ```python import torch from torch.utils.data import Dataset, DataLoader from torchvision import transforms, datasets class GramDataset(Dataset): def __init__(self, img_dir, transform=None): self.img_dir = img_dir self.transform = transform self.images = datasets.ImageFolder(img_dir, transform=transform) def __len__(self): return len(self.images) def __getitem__(self, idx): img, label = self.images[idx] return torch.Tensor(img), label ``` 在上述代码,我们使用了torch.utils.data.Dataset类,并定义了两个必要的方法:`__len__`和`__getitem__`。其,`__len__`方法返回数据集的样本数量,`__getitem__`方法返回数据集的一个样本。 在`__getitem__`方法,我们先获取图像和标签,然后将图像转换为torch.Tensor数据类型,最后返回这个样本。 接下来,您可以使用torch.utils.data.DataLoader加载数据集: ```python img_dir = 'path/to/image/folder' transform = transforms.Compose([ transforms.Resize((256, 256)), transforms.ToTensor() ]) dataset = GramDataset(img_dir=img_dir, transform=transform) dataloader = DataLoader(dataset, batch_size=32, shuffle=True) ``` 在上述代码,我们首先定义了一个包括两个转换的transform函数,即将图像缩放到256x256大小,并将图像转换为torch.Tensor数据类型。接着,我们使用我们自定义的GramDataset类来加载数据集,并使用torch.utils.data.DataLoader类来创建一个数据加载器。这里设定了batch_size为32,shuffle为True,表示我们希望每次取出32个样本,并将它们打乱顺序。 最后,您就可以使用dataloader来迭代数据集的样本了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值