import torch
from torch.utils.data import Dataset, DataLoader
import numpy as np
torch.manual_seed(1)
# 自定义数据集
class CustomDataset(Dataset):
def __init__(self):
# 创建一些示例数据(100个样本,每个样本包含10个特征)
self.data = torch.randn(100, 10)
self.labels =torch.from_numpy(np.arange(100)) # 二分类标签
def __len__(self):
# 返回数据集的大小
return len(self.data)
def __getitem__(self, idx):
# 根据索引 idx 返回对应的样本和标签
sample = self.data[idx]
label = self.labels[idx]
return sample, label
# 创建数据集的实例
dataset = CustomDataset()
# 使用DataLoader加载数据
# 设置batch_size=16,shuffle=True表示打乱数据顺序
dataloader = DataLoader(dataset, batch_size=100, shuffle=True)
# 迭代DataLoader
for i in range(2):
for batch_idx, (inputs, labels) in enumerate(dataloader):
print(f"Batch {batch_idx+1}")
print(f"Inputs: {inputs.size()}") # 显示当前batch中输入数据的维度
print(f"Labels: {labels.size()}") # 显示当前batch中标签的维度
print(labels)
# 在这里你可以对数据进行训练
# 例如:outputs = model(inputs)
只要是shuffle=True,每次epoch结果的顺序是不一样的,如果想每一次的结果是一样的
如果shuffle=False
import torch
from torch.utils.data import Dataset, DataLoader
import numpy as np
torch.manual_seed(1)
# 自定义数据集
class CustomDataset(Dataset):
def __init__(self):
# 创建一些示例数据(100个样本,每个样本包含10个特征)
self.data = torch.randn(100, 10)
self.labels =torch.from_numpy(np.arange(100)) # 二分类标签
def __len__(self):
# 返回数据集的大小
return len(self.data)
def __getitem__(self, idx):
# 根据索引 idx 返回对应的样本和标签
sample = self.data[idx]
label = self.labels[idx]
return sample, label
# 创建数据集的实例
dataset = CustomDataset()
# 使用DataLoader加载数据
# 设置batch_size=16,shuffle=True表示打乱数据顺序
dataloader = DataLoader(dataset, batch_size=100, shuffle=True)
# 迭代DataLoader
for i in range(2):
for batch_idx, (inputs, labels) in enumerate(dataloader):
print(f"Batch {batch_idx+1}")
print(f"Inputs: {inputs.size()}") # 显示当前batch中输入数据的维度
print(f"Labels: {labels.size()}") # 显示当前batch中标签的维度
print(labels)
# 在这里你可以对数据进行训练
# 例如:outputs = model(inputs)
结果如下