温馨提示×

linux pytorch怎样导入数据

小樊
43
2026-09-25 17:39:59
栏目: 智能运维

在 Linux 下使用 PyTorch 导入数据,通常有两种常见方式:


一、使用 torch.utils.data.Dataset + DataLoader(推荐)

1️⃣ 自定义 Dataset(最常用)

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

class MyDataset(Dataset):
    def __init__(self, data, labels):
        self.data = data
        self.labels = labels

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        return self.data[idx], self.labels[idx]

# 示例数据
x = torch.randn(100, 3, 32, 32)
y = torch.randint(0, 10, (100,))

dataset = MyDataset(x, y)
dataloader = DataLoader(dataset, batch_size=8, shuffle=True)

for batch_x, batch_y in dataloader:
    print(batch_x.shape, batch_y.shape)
    break

二、从文件导入数据(Linux 常见)

2️⃣ 读取 CSV(用 pandas)

import pandas as pd
import torch
from torch.utils.data import Dataset

class CSVDataset(Dataset):
    def __init__(self, csv_path):
        df = pd.read_csv(csv_path)
        self.x = df.iloc[:, :-1].values.astype('float32')
        self.y = df.iloc[:, -1].values.astype('long')

    def __len__(self):
        return len(self.x)

    def __getitem__(self, idx):
        return torch.tensor(self.x[idx]), torch.tensor(self.y[idx])

3️⃣ 读取图片(用 torchvision)

from torchvision import datasets, transforms

transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor()
])

dataset = datasets.ImageFolder(
    root='/data/images/train',
    transform=transform
)

loader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)

⚠️ 目录结构需为:

train/
  class0/
  class1/

三、使用内置数据集(Linux / 服务器通用)

from torchvision import datasets

train_set = datasets.MNIST(
    root='./data',
    train=True,
    download=True,
    transform=transforms.ToTensor()
)

四、Linux 下常见问题

✅ 多进程加载

DataLoader(..., num_workers=4)

注意:Linux 支持多进程,不要在交互式环境(如 IPython)直接跑

✅ 路径问题

Linux 使用 /,推荐:

os.path.join(root, 'data')

五、简单总结

数据类型 推荐方式
张量 / numpy 自定义 Dataset
CSV pandas
图片 torchvision
文本 Dataset + tokenizer

如果你能说明:

  • 数据格式(CSV / 图片 / 文本)
  • 是否在 GPU 服务器
  • 是否用预处理

我可以给你直接可运行的完整示例。

0 踩