1.1深度学习平台简介
1.2 PyTorch 简介
PyTorch是一个Python的深度学习库。它最初由Facebook人工智能研究小组开发,而优步的Pyro软件则用于概率编程。 最初,PyTorch由Hugh Perkins开发,作为基于Torch框架的LusJIT的Python包装器。PyTorch在Python中重新设计和实现Torch,同时为后端代码共享相同的核心C库。除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch。到目前,据统计已有80%的研究采用PyTorch,包括Google。
卷积神经网络基础
进化史
基本概念
- 全连接网络:链接权过多,难算难收敛,同时可能进入局部极小值,也容易产生过拟合问题
- 局部连接网络:顾名思义,只有一部分权值连接。部分输入和权值卷积。
- 填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充。
- 步长(Stride):如图步长为2
- 多通道卷积:如RGB
LeNet-5网络
网络结构可视化网站link
LeNet5代码实现
import torch
from torch import nn
from d2l import torch as d2l
class Reshape(torch.nn.Module):
def forward(self, x):
return x.view(-1, 1, 28, 28)
net = torch.nn.Sequential(
Reshape(),
nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
nn.AvgPool2d(kernel_size=2, stride=2),
nn.Flatten(),
nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
nn.Linear(120, 84), nn.Sigmoid(),
nn.Linear(84, 10))
基本卷积神经网络
AlexNet
网络说明
网络一共有8层可学习层——5层卷积层和3层全连接层
改进
- 池化层均采用最大池化
- 选用ReLU作为非线性环节激活函数
- 网络规模扩大,参数数量接近6000万
- 出现“多个卷积层+一个池化层”的结构
普遍规律
- 随网络深入,宽、高衰减,通道数增加