莫烦 - Pytorch学习笔记 [ 二 ] CNN ( 1 )
CNN原理和结构
观点提出
关于照片的三种观点引出了CNN的作用。
- 局部性:某一特征只出现在一张image的局部位置中。
- 相同性: 同一特征重复出现。例如鸟的羽毛。
- 不变性:subsampling下图片性质不变。类似于图片压缩。
相比与Fully Connected,减少了权重数目。
组成结构
卷积层
使用一个集合的滤波器在输入数据上滑动,得到内积,形成K张二维的激活图,作为该层卷积层的输出。
- 每类的滤波器寻找一种特征进行激活。
- 一个滤波器的高度必须与输入数据体的深度一致。
- 卷积层的输出深度是一个超参数,它与使用的滤波器的数量一致。
例如:
一张28 * 28 * 3的照片,\(W_1=28, H_1=28, D_1=3\),故感受野的尺寸可以是 5 * 5 * 3的。
若有16个滤波器同时运算,则输出层数为16。
4个超参数:滤波器数量\(K\),空间尺寸\(F\),滑动步长\(S\),零填充数量\(P\)。
一次过滤后输出体的尺寸 \(W_2 * H_2 * D_2\)
\]
步长必须是整数,零填充数量$ \frac{F - step}{2}$
参数共享:相同的滤波器可以检测出不同位置的相同特征,可以有效减少参数。
小滤波器的有效性:多个卷积层首先与非线性激活层交替的结构,比单一卷积层的结构更能提取出深层的特征;小滤波器组合使用参数更少,但不足的是反向更新参数时,可能会使用更多的内存。
池化层
逐渐降低数据体的空间尺寸,这样能够减少网络中参数的数量。
2个超参数:空间尺寸\(F\),滑动步长\(S\)。
最常用的池化层形式是尺寸为2*2的窗口,滑动步长为2,对图像进行采样,将其中75%的激活信息都丢掉,只选择其中最大的保留,以此去掉一些噪声信息。
平均池化一般放在CNN的最后一层。
CNN模块等
参数列表
卷积层参数:
in_channels: 当图片为RGB时为3,否则为1。对应的是输入数据体的深度。out_channels:输出数据体的深度。kernel_size:滤波器的大小,单位pixel。stride:步长padding:=0表示四周不进行0填充,=1表示进行1个像素点的填充。
池化层参数:
kernel_size:=2表示 2*2的小矩阵中选max。
CNN模型:ResNet
若将输入设为X,将某一有参网络层设为H,那么以X为输入的此层的输出将为H(X)。一般的CNN网络如Alexnet/VGG等会直接通过训练学习出参数函数H的表达,从而直接学习X -> H(X)。
而残差学习则是致力于使用多个有参网络层来学习输入、输出之间的参差即H(X) - X即学习X -> (H(X) - X) + X。其中X这一部分为直接的identity mapping,而H(X) - X则为有参网络层要学习的输入输出间残差。

class CNN(nn.Module):
..
def forward(self, x):
residual = x
# 代入层结构
if self.downsample is not None:
residual = self.downsample(x)
out += residual
#...
莫烦 - Pytorch学习笔记 [ 二 ] CNN ( 1 )的更多相关文章
- 莫烦pytorch学习笔记(二)——variable
.简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子, ...
- 莫烦pytorch学习笔记(八)——卷积神经网络(手写数字识别实现)
莫烦视频网址 这个代码实现了预测和可视化 import os # third-party library import torch import torch.nn as nn import torch ...
- 莫烦pytorch学习笔记(七)——Optimizer优化器
各种优化器的比较 莫烦的对各种优化通俗理解的视频 import torch import torch.utils.data as Data import torch.nn.functional as ...
- 莫烦PyTorch学习笔记(五)——模型的存取
import torch from torch.autograd import Variable import matplotlib.pyplot as plt torch.manual_seed() ...
- 莫烦PyTorch学习笔记(六)——批处理
1.要点 Torch 中提供了一种帮你整理你的数据结构的好东西, 叫做 DataLoader, 我们能用它来包装自己的数据, 进行批训练. 而且批训练可以有很多种途径. 2.DataLoader Da ...
- 莫烦PyTorch学习笔记(三)——激励函数
1. sigmod函数 函数公式和图表如下图 在sigmod函数中我们可以看到,其输出是在(0,1)这个开区间内,这点很有意思,可以联想到概率,但是严格意义上讲,不要当成概率.sigmod函数 ...
- 莫烦 - Pytorch学习笔记 [ 一 ]
1. Numpy VS Torch #相互转换 np_data = torch_data.numpy() torch_data = torch.from_numpy(np_data) #abs dat ...
- 莫烦PyTorch学习笔记(五)——分类
import torch from torch.autograd import Variable import torch.nn.functional as F import matplotlib.p ...
- 莫烦PyTorch学习笔记(四)——回归
下面的代码说明个整个神经网络模拟回归的过程,代码含有详细注释,直接贴下来了 import torch from torch.autograd import Variable import torch. ...
随机推荐
- Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现
服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...
- Cesium 基于MapBox底图加载3DTiles 模型
3DTiles 模型采用 CATIA V5 R22 --->3dxml --->GLB--->B3DM var extent = Cesium.Rectangle.fromDeg ...
- laravel 事件系统
例子: 打开 VerificationController ,此控制器处理所有邮件认证相关逻辑: app/Http/Controllers/Auth/VerificationController.ph ...
- jvm01
hotspot:是jvm的核心组件(或者名称),jvm 需要对class文件进行编译成cpu能直接运行的代码.hotspot会对频繁使用的class代码进行缓存,不会再次编译,类似于缓存 client ...
- json 字符串 <----> json 对象
一,字符串 -->JSON对象 1,转换函数 JSON.parse(json_str): 2,$.parseJSON(json_str): 用的是 jquery 的插件 所以需要引入 jq. ...
- RTT学习之启动流程
总结RT-Thread的启动流程. 非运行时与运行时的image文件分别是什么样的,请画下来.是谁将 RW 段中的 RW-data(初始化的全局变量)搬运到 RAM 中? MDK环境下各种数据段存储 ...
- 【PAT甲级】1096 Consecutive Factors (20 分)
题意: 输入一个int范围内的正整数,输出它最多可以被分解为多少个连续的因子并输出这些因子以*连接. trick: 测试点5包含N本身是一个素数的数据,此时应当输出1并把N输出. 测试点5包含一个2e ...
- 【PAT甲级】1076 Forwards on Weibo (30 分)
题意: 输入两个正整数N和L(N<=1000,L<=6),接着输入N行数据每行包括它关注人数(<=100)和关注的人的序号,接着输入一行包含一个正整数K和K个序号.输出每次询问的人发 ...
- 洛谷 P5016 龙虎斗(模拟)
嗯... 题目链接:https://www.luogu.org/problem/P5016 这道题是一道模拟,不要考虑复杂,直接暴力枚举每一个点,看看加上s2之后两个势力的差值,找最小,记录下标. 注 ...
- Ansible playbooks(任务、角色、模板、变色器、)
playbooks配置文件: [root@ansible ~]# vim /etc/ansible/hosts [test01] 192.168.200.114 [test02] 192.168.20 ...