温馨提示×

centos pytorch怎样导入数据

小樊
47
2026-10-26 21:56:12
栏目: 智能运维

在 CentOS 上使用 PyTorch 导入数据,方式和在其它 Linux / Windows 上基本一致,主要取决于你的数据格式。下面按常见场景给你总结。


一、通用前提(CentOS 环境)

  1. 已安装 Python(建议 3.8+)
  2. 已安装 PyTorch(CPU 或 GPU 版)
python -c "import torch; print(torch.__version__)"

二、常见数据导入方式

1️⃣ 使用 torch.utils.data.Dataset + DataLoader(最推荐)

自定义 Dataset(以图片为例)

import torch
from torch.utils.data import Dataset, DataLoader
from PIL import Image
import os

class MyDataset(Dataset):
    def __init__(self, img_dir, label_file):
        self.img_dir = img_dir
        self.labels = self._load_labels(label_file)

    def _load_labels(self, path):
        labels = {}
        with open(path) as f:
            for line in f:
                name, label = line.strip().split()
                labels[name] = int(label)
        return labels

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

    def __getitem__(self, idx):
        img_name = list(self.labels.keys())[idx]
        img_path = os.path.join(self.img_dir, img_name)
        img = Image.open(img_path).convert("RGB")
        label = self.labels[img_name]
        return img, label

dataset = MyDataset("images/", "labels.txt")
loader = DataLoader(dataset, batch_size=32, shuffle=True)

for x, y in loader:
    print(x.shape, y)

2️⃣ 导入 CSV / 表格数据

import pandas as pd
import torch

data = pd.read_csv("data.csv")
x = torch.tensor(data.iloc[:, :-1].values, dtype=torch.float32)
y = torch.tensor(data.iloc[:, -1].values, dtype=torch.long)

3️⃣ 导入 NumPy 数据

import numpy as np
import torch

arr = np.load("data.npy")
tensor = torch.from_numpy(arr)

4️⃣ 图片数据(使用 torchvision)

from torchvision import datasets, transforms

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

dataset = datasets.ImageFolder("data/train", transform=transform)
loader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)

5️⃣ 文本数据(NLP)

from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator

tokenizer = get_tokenizer("basic_english")

def yield_tokens(data_iter):
    for text in data_iter:
        yield tokenizer(text)

vocab = build_vocab_from_iterator(yield_tokens(train_texts))

三、CentOS 特有注意事项

✅ 文件路径

CentOS 路径区分大小写:

/data/train != /data/Train

✅ 权限问题

ls -l data/
chmod -R 755 data/

✅ 缺少依赖库

如 PIL 报错:

pip install pillow

四、你适合哪种方式?

数据类型 推荐方式
图片 ImageFolder / 自定义 Dataset
CSV pandas + tensor
NumPy from_numpy
文本 torchtext
大规模 Dataset + DataLoader

如果你能告诉我:

  • ✅ 数据格式(图片 / CSV / 文本 / npy)
  • ✅ 是否有标签
  • ✅ CentOS 是否有 GPU

我可以给你完全可直接运行的示例代码。

0 踩