在 Linux 环境下使用 PyTorch 导入数据,通常有以下几种常见方式,从简单到规范:
torch.utils.data.Dataset + DataLoader(推荐)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
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)
import numpy as np
import torch
data = np.load('/path/to/data.npy')
tensor = torch.from_numpy(data)
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)
from torchvision import datasets
train_set = datasets.MNIST(
root='./data',
train=True,
download=True,
transform=transforms.ToTensor()
)
⚠️ 若服务器无外网,可提前下载后放到
root目录
'/home/user/data/train' # 绝对路径最安全
DataLoader(..., num_workers=4)
若报错,可设
num_workers=0
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),我可以给你更针对性的示例代码。