本教程的目的:
- 全面了解pytorch的tensor库和神经网络
- 训练一个小型神经网络对图像进行分类
什么是pytorch?
tensor和numpy的ndarrays类似,但tensor还可以用在GPU上加速计算。
1:
from __future__ import print_function
import torch
第一行代码表示即使在2.x的python中,也需要像python3.x那样使用print。
neural network:
1:
feed-forward network前馈网络
神经网络的典型训练过程如下:
- 定义具有一些可学习参数(或权重)的神经网络
- 遍历输入数据集
- 通过网络处理输入
- 计算损失(输出正确的距离有多远)
- 将梯度传播回网络参数
- 通常使用简单的更新规则来更新网络的权重:
weight = weight - learning_rate * gradient
2:
常用的导入块:
import torch
import torch.nn as nn
import torch.nn.functional as F
training a classifier训练分类器
1:
对于图像处理,可以使用Pillow、OpenCV;
对于语音处理,可以使用scipy、librosa;
对于文本处理,可以使用Python或Cython基础数据加载模块,或者用NLTK和SpaCy
尤其对于视觉,创建了一个叫做torchvision
的包,该包含有支持加载类似的Imagenet,CIFAR10,MNIST等公共数据集的数据加载模块torchvision.datasets
和支持加载图像数据数据转换模块torch.utils.data .DataLoader
。
这提供了极大的便利,并且避免了编写“样板代码”。
2:
训练图像分类器的步骤:
- 使用
torchvision
加载并归一化CIFAR10的训练和测试数据; - 定义一个卷积神经网络;
- 定义一个损失函数;
- 在训练样本数据上训练网络;
- 在测试样本数据上测试网络。