更深入地加载数据

使用 PyTorch 的深度学习入门

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

我们的动物数据集

import pandas as pd
animals = pd.read_csv('animal_dataset.csv')
animal_name hair feathers eggs milk predator legs tail type
sparrow 0 1 1 0 0 2 1 0
eagle 0 1 1 0 1 2 1 0
cat 1 0 0 1 1 4 1 1
dog 1 0 0 1 0 4 1 1
lizard 0 0 1 0 1 4 1 2

类型类别:bird (0), mammal (1), reptile (2)

使用 PyTorch 的深度学习入门

我们的动物数据集:定义特征

import numpy as np

# 定义输入特征
features = animals.iloc[:, 1:-1]


X = features.to_numpy() print(X)
[[0 1 1 0 0 2 1]
 [0 1 1 0 1 2 1]
 [1 0 0 1 1 4 1]
 [1 0 0 1 0 4 1]
 [0 0 1 0 1 4 1]]
使用 PyTorch 的深度学习入门

回到动物数据集:定义目标值

# 定义目标值(真实标签)
target = animals.iloc[:, -1]
y = target.to_numpy()
print(y)
[0 0 1 1 2]
使用 PyTorch 的深度学习入门

TensorDataset

import torch
from torch.utils.data import TensorDataset


# 实例化数据集类 dataset = TensorDataset(torch.tensor(X), torch.tensor(y))
# 访问单个样本 input_sample, label_sample = dataset[0] print('input sample:', input_sample) print('label sample:', label_sample)
input sample: tensor([0, 1, 1, 0, 0, 2, 1])
label sample: tensor(0)
使用 PyTorch 的深度学习入门

DataLoader

from torch.utils.data import DataLoader


batch_size = 2
shuffle = True
# 创建 DataLoader dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=shuffle)

$$

  • Epoch:完整遍历一次训练数据加载器
  • 泛化:模型在未见数据上表现良好
使用 PyTorch 的深度学习入门

DataLoader

# 迭代数据加载器
for batch_inputs, batch_labels in dataloader:
    print('batch_inputs:', batch_inputs)
    print('batch_labels:', batch_labels)
batch_inputs: tensor([[1, 0, 0, 1, 1, 4, 1],
        [1, 0, 0, 1, 0, 4, 1]])
batch_labels: tensor([1, 1])

batch_inputs: tensor([[0, 1, 1, 0, 1, 2, 1], [0, 0, 1, 0, 1, 4, 1]]) batch_labels: tensor([0, 2])
batch_inputs: tensor([[0, 1, 1, 0, 0, 2, 1]]) batch_labels: tensor([0])
使用 PyTorch 的深度学习入门

Vamos praticar!

使用 PyTorch 的深度学习入门

Preparing Video For Download...