torch数据打包处理

torch中的数据打包器

torch的导入

通过import导入函数

import torch

torch的gpu版本

检查显卡是否可用

torch.cuda.is_available()

返回值若为True则显卡可以使用

将数据或者模型等转移设备,可以用.to(device)命令

import torch
# 将数据转移到第一张显卡上
data = torch.tensor([1, 2, 3])
data = data.to("cuda:0")
# 或者使用以下方法
data = data.cuda() # 等价于data.to("cuda:0")

import torch.nn as nn
# 将模型转移到第一张显卡上
model = nn.Linear(in_features=25, out_features=5)
model.to("cuda:0")

数据打包器

在torch包中有两个较为重要的数据包处理函数TensorDatatsetDataLoader,可以通过以下方式导入

from torch.utils.data import TensorDataset, DataLoader
  • TensorDataset的用法
import torch
from torch.utils.data import TensorDataset
# 假设有以下的特征与标签张量
features = torch.tensor([[1, 2], [3, 4], [5, 6], [7, 8]])
labels = torch.tensor([0, 1, 0, 1])

# 创建TensorDataset对象
dataset = TensorDataset(features, labels)
  • TensorDataset访问数据
    TensorDataset对象可以支持索引与切片操作
# 访问第一个样本
first_sample = dataset[0]
# 返回值为一个元组(tensor([1, 2]), tensor(0))

# 访问前两个样本
first_two_samples = dataset[:2]
# 这会返回一个元组(tensor([[1, 2], [3, 4]]), tensor([0, 1]))

image-20240806101256426

  • DataLoader的用法
    在将数据打包为TensorDataset对象后可以使用DataLoader进行打包
from torch.utils.data import DataLoader
# 创建DataLoader对象
dataloader = DataLoader(dataset, batch_size=2, shuffle=True)

在这个例子中,DataLoader有三个参数,第一个参数就是我们生成的TensorDataset的对象;第二个参数是batch_size其作用是将样本分批次打包,一批次的数量为2;第三个参数shuffle的意思是是否打乱样本的顺序,在训练集中一般将此参数设置为True,在验证集和测试集中此参数设置为False

  • DataLoader的迭代与访问

    我们可以通过for循环来访问DataLoader中的数据

for data, labels in dataloader:
    pass

在迭代dataloader时,每次迭代都会返回一个批次的数据和标签,方便模型训练和验证
如果需要每个批次的索引我们还可以用enumerate来得到每个批次的索引

for index, (data, labels) in enumerate(dataloader):
    pass

enumerate的返回值是一个元组(索引号, 对应的可迭代序列数据)因此index对应批次的索引号,(data, labels)对应该批次的数据和标签

  • DataLoader的长度
    我们可以通过len()函数去测量dataloader中有多少批次
len(dataloader)
# 返回值为一个数字,在此例中样本数为4,批次大小为2,因此返回值为2

image-20240806101344469

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值