PyTorch 卷积神经网络
深度学习是机器学习的一个分支,被认为是近几十年研究人员所迈出的关键一步。深度学习的应用例子包括图像识别和语音识别。
深度神经网络的两个重要类型如下:
- 卷积神经网络
- 循环神经网络
在本章中,我们将重点讨论第一种类型,即卷积神经网络(CNN)。
卷积神经网络
卷积神经网络的设计目的是通过多层数组来处理数据。这种类型的神经网络在图像识别或人脸识别等应用中使用。
CNN与其他普通神经网络的主要区别在于,CNN将输入作为二维数组,并直接对图像进行操作,而不是专注于特征提取,其他神经网络则专注于特征提取。
CNN的主要方法包括解决识别问题。像Google和Facebook这样的顶级公司已经投资于识别项目的研究和开发,以实现更快的处理速度。
每个卷积神经网络包括三个基本思想:
- 局部感受野
- 卷积
- 池化
让我们详细了解每个术语。
局部感受野
CNN利用输入数据中存在的空间相关性。神经网络的每个并发层与一些输入神经元连接。这个特定区域称为局部感受野。它仅关注隐藏神经元。隐藏神经元将在该区域内处理输入数据,而不会意识到特定边界之外的改变。
下面是生成局部感受野的图示表示:
卷积
在上图中,我们观察到每个连接都学习了一个带有与从一层移动到另一层相关联的隐藏神经元的权重。在这里,各个神经元不时执行一次移位。这个过程被称为“卷积”。
从输入层到隐藏特征图的连接映射被定义为“共享权重”,其中包括偏置被称为“共享偏置”。
池化
卷积神经网络使用池化层,它们紧跟在CNN声明之后。它将来自用户的输入作为特征图,这些特征图来自卷积网络并准备了一个压缩的特征图。池化层有助于创建具有前一层神经元的层。
PyTorch的实现
使用PyTorch创建卷积神经网络的步骤如下:
步骤1
导入创建简单神经网络所需的包。
from torch.autograd import Variable
import torch.nn.functional as F
步骤2
创建一个具有批量表示的卷积神经网络类。我们输入x的批量形状是(3, 32, 32)。
class SimpleCNN(torch.nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
#Input channels = 3, output channels = 18
self.conv1 = torch.nn.Conv2d(3, 18, kernel_size = 3, stride = 1, padding = 1)
self.pool = torch.nn.MaxPool2d(kernel_size = 2, stride = 2, padding = 0)
#4608 input features, 64 output features (see sizing flow below)
self.fc1 = torch.nn.Linear(18 * 16 * 16, 64)
#64 input features, 10 output features for our 10 defined classes
self.fc2 = torch.nn.Linear(64, 10)
步骤3
计算第一个卷积的激活大小从(3, 32, 32)变为(18, 32, 32)。
维度的大小从(18, 32, 32)变为(18, 16, 16)。由于此原因,改变神经网络输入层的数据维度,使其大小从(18, 16, 16)变为(1, 4608)。
请回忆一下,-1表示根据给定的其他维度推断此维度的大小。
def forward(self, x):
x = F.relu(self.conv1(x))
x = self.pool(x)
x = x.view(-1, 18 * 16 *16)
x = F.relu(self.fc1(x))
#Computes the second fully connected layer (activation applied later)
#Size changes from (1, 64) to (1, 10)
x = self.fc2(x)
return(x)
PyTorch 教程目录
- PyTorch 简介
- PyTorch 安装
- PyTorch 神经网络的数学基本构建模块
- PyTorch 神经网络基础
- PyTorch 机器学习的通用工作流程
- PyTorch 机器学习 vs. 深度学习
- PyTorch 实现第一个神经网络
- PyTorch 神经网络到功能块
- PyTorch 术语
- PyTorch 加载数据
- PyTorch 线性回归
- PyTorch 卷积神经网络
- PyTorch 循环神经网络
- PyTorch 数据集
- PyTorch 卷积神经网络介绍
- PyTorch 从头训练一个卷积神经网络
- PyTorch 卷积神经网络中的特征提取
- PyTorch 卷积神经网络的可视化
- PyTorch 序列处理与卷积
- PyTorch 词嵌入
- PyTorch 递归神经网络