IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 卷积神经网络之卷积层理解(持续更新) -> 正文阅读

[人工智能]卷积神经网络之卷积层理解(持续更新)

目录

一、初识卷积层

二、图片卷积的过程(以步长为1,无填充情况为例)

?三、卷积的填充

?四、卷积的步长

?五、卷积的输出大小计算

六、卷积的感受野

?七、卷积层的深度


一、初识卷积层

? ? ? ? 卷积层是CNN(Convolutional Neural Networks)中的基本网络层,主要用于对图像进行特征提取操作,其卷积核权重是共享权值的,对应的相关概念还包括步长,填充。卷积层在CNN中的作用如下图所示。

二、图片卷积的过程(以步长为1,无填充情况为例)

? ? ? ? 对于输入图片数据的矩阵大小为5X5,卷积核大小为3X3的部分卷积过程如下所示:

? ? ? ? ?推广到任意大小输入(Input)和任意大小卷积核(Kernel)的卷积过程如下图所示:

?三、卷积的填充

? ? ? ? 3.1 填充的作用
? ? ? ? (1)使卷积后图像分辨率不变,方便计算特征图尺寸的变化
? ? ? ? (2)弥补边界信息“丢失”?

? ? ? ? 3.2 填充的基本过程
????????填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素)。下图我们在原输入高和宽的两侧分别添加了值为0的元素,使得输入高和宽从3变成了5,并导致输出高和宽由2增加到4。下图阴影部分为第一个输出元素及其计算所使用的输入和核数组元素:0×0+0×1+0×2+0×3=0。

?四、卷积的步长

????????卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。我们将每次滑动的行数和列数称为步幅或步长(stride)。

????????下图展示了在高上步幅为3、在宽上步幅为2的卷积运算。可以看到,输出第一列第二个元素时,卷积窗口向下滑动了3行,而在输出第一行第二个元素时卷积窗口向右滑动了2列。当卷积窗口在输入上再向右滑动2列时,由于输入元素无法填满窗口,无结果输出。下图阴影部分为输出元素及其计算所使用的输入和核数组元素:0×0+0×1+1×2+2×3=8、0×0+6×1+0×2+0×3=6。

?五、卷积的输出大小计算

? ? ? ? 5.1 计算公式

? ? ? ? 在前面,已经把卷积涉及的主要概念和基本过程介绍了,接下来我们将介绍卷积输入和输出的计算关系。以二维卷积为例。
? ? ? ? 输入X_{m \times n }:大小为m \times n的输入矩阵X
? ? ? ? 卷积核K_{i \times j }:大小为i \times j的卷积核矩阵K
? ? ? ? 输入填充大小\left ( P_{h} ,P_{w} \right ):在输入的高上填充P_{h},在输入的宽上填充P_{w}
? ? ? ? 卷积核窗口滑动步长\left ( h,w \right ):每次计算卷积,在输入矩阵X的高上滑动h个单位,在X的宽上? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????上滑动w个单位

? ? ? ? 设输出Y_{m1 \times n1},经过卷积后,输出矩阵Y的大小的计算公式如下:

m_{1}= \left \lfloor \frac{m-i+2\times P_{h} }{h} \right \rfloor + 1

n_{1}= \left \lfloor \frac{n-j+2\times P_{w} }{w} \right \rfloor + 1

? ? ? ? 该公式适合卷积的三种模式:full, same, valid,动态过程参考:http://t.csdn.cn/qO68l

? ? ? ? 5.2 计算示例

? ? ? ? ?(1)示例:下图大小为3x4的输入矩阵经过大小为2x2的卷积核后,得到2x3大小的输出矩阵

? ? ? ? ?1.输出矩阵大小计算过程为:

m_{1}= \left \lfloor \frac{3-2+2\times 0 }{1} \right \rfloor + 1= 2

n_{1}= \left \lfloor \frac{4-2+2\times 0 }{1} \right \rfloor + 1= 3

? ? ? ? ?2. 代码实现及output

import torch.nn as nn
import torch


# 定义一个函数来计算卷积层大小。它对输入和输出做相应的升维和降维
def comp_conv2d(conv2d, X):
    # (1, 1)代表批量大小和通道数
    X = X.view((1, 1) + X.shape)
    Y = conv2d(X)
    return Y.view(Y.shape[2:]) # 排除不关心的前两维:批量和通道


#创建大小为3x4的输入矩阵
X = torch.rand(3, 4)


# 卷积核为2x2, 在输入的高和宽上填充大小为(0, 0), 卷积核在高和宽上的滑动步幅为(1, 1)
conv2d = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=(2, 2), padding=(0, 0), stride=(1, 1))   #此处的Conv2d是nn的内置函数,实现卷积过程,返回值请自行查阅
print(comp_conv2d(conv2d, X).shape)


output: torch.Size([2, 3])

? ? ? ? (2)示例: 原大小为3x3的输入矩阵,大小为2x2的卷积核,将输入矩阵的高和宽填充成5x5,每次卷积核窗口在输入矩阵上高的滑动单位为3,宽的滑动单位为2,经过卷积过程后,最后得到大小为2x2的输出矩阵。

import torch.nn as nn
import torch

#忽略警告
import warnings
warnings.filterwarnings("ignore")


# 定义一个函数来计算卷积层大小。它对输入和输出做相应的升维和降维
def comp_conv2d(conv2d, X):
    # (1, 1)代表批量大小和通道数
    X = X.view((1, 1) + X.shape)
    Y = conv2d(X)
    return Y.view(Y.shape[2:]) # 排除不关心的前两维:批量和通道

#创建大小为3x3的输入矩阵
X = torch.range(0, 8).reshape(3, 3)


# # 使用高为2、宽为2的卷积核。在?和宽两侧的填充数分别为1和1
conv2d = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=(2, 2), padding=(1, 1), stride=(3, 2))   #此处的Conv2d是nn的内置函数,实现卷积过程,返回值请自行查阅
print(comp_conv2d(conv2d, X).shape)

output: torch.Size([2, 2])

六、卷积的感受野

????????卷积神经网络每一层输出的特征图(featuremap)上的像素点在输 入图片上映射的区域大小,即特征图上的一个点对应输入图上的区域。感受野的大小计算,采用从后往前逐层的计算方法。

?七、卷积层的深度

????????一个卷积层通常包含多个尺寸一致的卷积核,如下图所示。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:15:05  更:2022-09-13 11:18:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 17:48:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计