欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > TensorDataser和DataLoader的解释与使用

TensorDataser和DataLoader的解释与使用

2025/3/26 10:10:44 来源:https://blog.csdn.net/m0_73426548/article/details/146510301  浏览:    关键词:TensorDataser和DataLoader的解释与使用

TensorDataset 是 PyTorch 提供的一个工具类,用于将多个张量(Tensors)打包成一个数据集(Dataset),便于配合 DataLoader 进行批量加载和数据管理。

一、概念

作用:将多个张量(如特征张量、标签张量)按样本对齐,合并为一个数据集对象。

适用场景:监督学习任务、多输入、多输出模型、简化数据加载流程,兼容DataLoader的批处理、打乱数据等操作

二、使用步骤

1.导入库

import torch
from torch.utils.data import TensorDataset, DataLoader

 2.准备数据

创建一些特征张量和标签,数据类型可以是numpy或list列表

特征张量:(样本数,特征维度)

标签张量:(样本数,)

# 示例数据(100个样本,每个样本5个特征)
features = torch.randn(100, 5)  # 随机生成特征
labels = torch.randint(0, 2, (100,))  # 二分类标签(0或1)

3。创建TensorDataser,将特征张量和标签合并成一个大张量

dataset = TensorDataset(features, labels)

 4.使用DataLoader加载数据,将合并好的张量按照指定大小来切分批次

dataloader = DataLoader(dataset,batch_size=32,shuffle=True,  # 训练时打乱数据num_workers=2  # 多进程加载数据(可选)
)# 遍历批次
for batch_features, batch_labels in dataloader:# 在此处执行模型的前向传播、损失计算等操作print("Batch features shape:", batch_features.shape)print("Batch labels shape:", batch_labels.shape)

三、注意事项

  1. 张量对齐:所有传入 TensorDataset 的张量的第一个维度(样本数)必须相同。
  2. 数据类型:确保张量的数据类型(dtype)与模型输入要求一致(如 float32 或 int64)。
  3. 设备位置:若使用 GPU,需将张量放在 GPU 上(通过 tensor.to(device)),或让 DataLoader 自动处理。
  4. 内存限制:数据量过大时,优先使用 Dataset 的子类(如 IterableDataset)动态加载数据,避免内存溢出。

 四、完整代码

import torch
from torch.utils.data import TensorDataset, DataLoader# 1. 生成模拟数据
num_samples = 1000
features = torch.randn(num_samples, 10)  # 10维特征
labels = torch.randn(num_samples)       # 连续值标签# 2. 创建 TensorDataset
dataset = TensorDataset(features, labels)# 3. 定义 DataLoader
dataloader = DataLoader(dataset,batch_size=64,shuffle=True,num_workers=4
)# 4. 遍历数据
for batch_idx, (batch_features, batch_labels) in enumerate(dataloader):print(f"Batch {batch_idx}:")print("  Features shape:", batch_features.shape)  # [64, 10]print("  Labels shape:  ", batch_labels.shape)    # [64]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词