本文概述
- 卷积层
- 大步前进
- 填充
- 池化层
- 全连接层
CNN将图像作为输入, 将其分类并按特定类别(例如狗, 猫, 狮子, 老虎等)进行处理。计算机将图像视为像素阵列, 并且取决于图像的分辨率。根据图像分辨率, 它将显示为h * w * d, 其中h =高度w =宽度, d =尺寸。例如, RGB图像是矩阵的6 * 6 * 3阵列, 而灰度图像是矩阵的4 * 4 * 1阵列。
在CNN中, 每个输入图像都将经过一系列卷积层以及池化, 完全连接的层, 滤镜(也称为内核)。之后, 我们将应用Soft-max函数对概率值为0和1的对象进行分类。
文章图片
卷积层 卷积层是从输入图像中提取特征的第一层。通过使用输入数据的小方块学习图像特征, 卷积层保留了像素之间的关系。这是一种数学运算, 需要两个输入, 例如图像矩阵和内核或滤波器。
- 图像矩阵的尺寸为h×w×d。
- 滤波器的尺寸为fh×fw×d。
- 输出的尺寸为(h-fh + 1)×(w-fw + 1)×1。
文章图片
让我们从一个5 * 5的图像开始, 其像素值为0、1, 并且滤波器矩阵3 * 3为:
文章图片
5×5图像矩阵与3×3滤波器矩阵相乘的卷积称为” 特征图” , 并显示为输出。
文章图片
使用不同的滤镜对图像进行卷积可以通过应用滤镜来执行诸如模糊, 锐化和边缘检测之类的操作。
大步前进 步幅是在输入矩阵上移动的像素数。当步幅等于1时, 我们一次将滤镜移动到1个像素, 如果步幅等于2, 则我们一次将滤镜移动到2个像素。下图显示了卷积的步长为2。
文章图片
填充 填充在构建卷积神经网络中起着至关重要的作用。如果图像缩小, 并且我们将采用一个包含100层图层的神经网络, 则最终过滤后将得到一个较小的图像。
如果我们在灰度图像上采用三乘三滤镜并进行卷积运算, 那将会发生什么?
文章图片
从上图可以清楚地看到, 角落的像素只会被覆盖一次, 而中间的像素将被覆盖一次以上。这意味着我们拥有有关该中间像素的更多信息, 因此存在两个缺点:
- 缩小输出
- 图像一角丢失信息。
池化层 池化层在图像的预处理中起着重要的作用。当图像太大时, 池化层会减少参数数量。合并是对从先前图层获得的图像的” 缩小” 。可以将其与缩小图像以减小其像素密度进行比较。空间池化也称为下采样或子采样, 它降低了每个地图的维数, 但保留了重要信息。空间池有以下几种类型:
最大池
最大池化是基于样本的离散化过程。它的主要目的是缩小输入表示的比例, 减小其尺寸, 并允许对合并的分区中包含的特征进行假设。
通过将max过滤器应用于初始表示的非重叠子区域来完成max pooling。
文章图片
文章图片
平均池化
通过将输入划分为矩形池区域并计算每个区域的平均值, 将通过平均池进行缩减。
句法
layer = averagePooling2dLayer(poolSize)layer = averagePooling2dLayer(poolSize, Name, Value)
汇总池
【PyTorch高级开发(卷积神经网络(图解分析))】汇总池或均值池的子区域设置与最大池化完全相同, 但不是使用max函数, 而是使用求和或均值。
全连接层 完全连接的层是一个层, 其中来自其他层的输入将被平整为向量并发送。它将通过网络将输出转换为所需的类数。
文章图片
在上图中, 借助完全连接的图层, 特征图矩阵将转换为向量, 例如x1, x2, x3 … xn。我们将结合功能来创建模型并应用激活函数(例如softmax或Sigmoid)将输出分类为汽车, 狗, 卡车等。
文章图片
推荐阅读
- PyTorch实战(卷积神经网络的实现)
- PyTorch基础概念(张量用法详解)
- PyTorch中样式转移的图像加载和转换
- PyTorch的梯度用法图解
- PyTorch CIFAR-10和CIFAR-100数据集
- Python网站拦截器(Windows上的脚本部署)
- 网页拦截器(构建python脚本)
- 什么是PyTorch(简单介绍PyTorch)
- cleartype,图文详细说明如何调整ClearType显示效果