温馨提示×

linux pytorch如何导入数据

小樊
40
2026-10-19 02:40:26
栏目: 智能运维

在 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]

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

dataset = MyDataset(data, labels)
dataloader = DataLoader(dataset, batch_size=8, shuffle=True)

for x, y in dataloader:
    print(x.shape, y.shape)
    break

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

2️⃣ 从 CSV 导入(使用 pandas)

pip install pandas
import pandas as pd
import torch

df = pd.read_csv('/path/to/data.csv')
x = torch.tensor(df.iloc[:, :-1].values, dtype=torch.float32)
y = torch.tensor(df.iloc[:, -1].values, dtype=torch.long)

3️⃣ 从 NumPy / .npy 文件导入

import numpy as np
import torch

data = np.load('/path/to/data.npy')
tensor = torch.from_numpy(data)

4️⃣ 从图片目录导入(图像任务)

pip install torchvision
from torchvision import datasets, transforms

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

dataset = datasets.ImageFolder(
    '/path/to/images',
    transform=transform
)

loader = DataLoader(dataset, batch_size=32, shuffle=True)

三、使用内置数据集(Linux 无界面也可)

from torchvision import datasets

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

⚠️ 若服务器无外网,可提前下载后放到 root 目录


四、在 Linux 服务器上的常见注意点

✅ 路径问题

'/home/user/data/train'  # 绝对路径最安全

✅ 多进程加载

DataLoader(..., num_workers=4)

若报错,可设 num_workers=0

✅ GPU

device = 'cuda' if torch.cuda.is_available() else 'cpu'
x = x.to(device)

五、总结(快速选择)

数据类型 推荐方式
数组 / 张量 Dataset + DataLoader
CSV pandas
图像 ImageFolder
NumPy torch.from_numpy
标准数据集 torchvision.datasets

如果你有 具体数据格式(CSV / 图片 / 文本 / 视频) 或 任务类型(分类 / 检测 / NLP),我可以给你更针对性的示例代码。

0 踩