Pytorch(3)-数据集和数据加载器

文章目录数据集和数据加载器加载数据集迭代和可视化数据集为文件创建自定义数据集_ _ init _ __ _ len _ __ _ getitem _ _准备数据以使用DataLoaders进行train遍历DataLoader总结参考数据集和数据加载器用于处理数据样本的代码可能变得凌乱且难以维护。理想情况下,我们希望将数据集代码与模型训练代码分离,以提高可读性和模块化性。PyTorch提供了两个数据原语:torch.utils.data.DataLoadertorch.utils.data.Dat
摘要由CSDN通过智能技术生成

数据集和数据加载器

用于处理数据样本的代码可能变得凌乱且难以维护。理想情况下,我们希望将数据集代码与模型训练代码分离,以提高可读性和模块化性。PyTorch提供了两个数据原语:

torch.utils.data.DataLoader

torch.utils.data.Dataset 

它们使您可以使用预加载的数据集以及您自己的数据。 Dataset存储样本及其相应的标签,DataLoader在周围包裹一个迭代器,Dataset以方便访问样本。

PyTorch域库提供了许多预加载的数据集(例如FashionMNIST),这些数据集可以子类化torch.utils.data.Dataset并实现特定于特定数据的功能。它们可用于为模型建立原型并进行基准测试。您可以在这里找到它们:图像数据集, 文本数据集和 音频数据集

加载数据集

这是一个如何从TorchVision加载Fashion-MNIST数据集的示例。Fashion-MNIST是Zalando文章图片的数据集,包含60,000个训练示例和10,000个测试示例。每个示例包括一个28×28灰度图像和一个来自10个类别之一的关联标签。

我们使用以下参数加载FashionMNIST数据集:
root 是训练/测试数据的存储路径,
train 指定训练或测试数据集,
download=True如果无法从互联网上下载数据,请从上下载root。
transform和target_transform指定功能和标签转换

import torch
from torch.utils.data import Dataset
from torchvision import datasets
from torchvision.transforms import ToTensor
import matplotlib.pyplot as plt


training_data = datasets.FashionMNIST(
    root="data",
    train=True,
    download=True,
    transform=ToTensor()
)

test_data = datasets.FashionMNIST(
    root="data",
    train=False,
    download=True,
    transform=ToTensor()
)

迭代和可视化数据集

labels_map = {
   
    0: "T-Shirt",
    1: "Trouser",
    2: "Pullover",
    3: "Dress",
    4: "Coat",
    5: "Sandal",
    6: "Shirt",
    7: "Sneaker",
    8: "Bag",
    9: "Ankle Boot",
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用PyTorch的ResNet-18模型训练自己的数据集的源代码示例: ```python import torch import torchvision import torchvision.transforms as transforms import torchvision.models as models import torch.optim as optim import torch.nn as nn # 定义数据预处理 transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) ]) # 加载自定义数据集 train_dataset = torchvision.datasets.ImageFolder(root='path_to_train_data', transform=transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=16, shuffle=True, num_workers=2) # 加载预训练的ResNet-18模型 model = models.resnet18(pretrained=True) # 冻结模型的参数 for param in model.parameters(): param.requires_grad = False # 替换最后一层全连接层 num_ftrs = model.fc.in_features model.fc = nn.Linear(num_ftrs, num_classes) # 定义损失函数和优化 criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9) # 将模型移动到GPU device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") model = model.to(device) # 训练模型 num_epochs = 10 for epoch in range(num_epochs): running_loss = 0.0 for i, data in enumerate(train_loader, 0): inputs, labels = data inputs, labels = inputs.to(device), labels.to(device) optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() if i % 200 == 199: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 200)) running_loss = 0.0 print('训练完成!') ``` 注意替换代码中的`path_to_train_data`为你自己的训练数据集的路径。此外,还可以调整超参数并将模型训练在GPU上,以加快训练速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值