卷积神经网络学习笔记(基本理解)

卷积神经网络

1.卷积神经网络的多层卷积可以保留图像原有的空间特征,

相比于全连接的方式,在数据保存方面更有优势。

2.卷积过程中的下采样的目的是为了减少数据量,从而降低运算的需求。

卷积运算过程

1.An*Bn,对应元素相乘,而并非矩阵相乘。(如图所示,该图为单通道运算)
在这里插入图片描述

左侧运算的模块向右和向下运动遍历运算。

2.但是往往是多通道运算的运算,所以我们要匹配多个卷积核,每个通道运算完后,再相加。

在这里插入图片描述

此过程称为卷积运算。
在这里插入图片描述
在这里插入图片描述

卷积运算过程代码如下:

1.关于输入输出通道的理解,可以查看这儿
2.关于batch_size的理解,可以查看这儿

import torch
in_channel,out_channel=5,10 #输入通道RGB则为3,灰度则为1,输出通道数量有过滤器(卷积核)的数目决定
width,height=100,100 #图像大小
kernel_size=3 #卷积核的大小,3*3
batch_size=1 #一次训练所选取的样本数,小批量输入

input=torch.randn(batch size,in_channel,width,height) 
conv_layer=torch.nn.Conv2d(in_channel,out_channel,kenel_size=kenel_size) #卷积运算的过程
output=conv_layer(input)
print(input.shape) #[1,5,100,100]
print(output.shape) #[1,10,98,98]
print(conv_layer.weight.shape) #[10,5,3,3]  输入通道,输出通道,卷积核大小

填充功能padding

为了保持输入宽度和输出的宽度保持一致,我们可以在输入通道的周围进行填充(0),填充一圈则宽度加2,即可保持输出宽度大小与输入宽度大小一致。(卷积核大小是33)
填充的圈数= (卷积核大小)//2, 卷积核大小为5
5时,需要填充两圈。
![在这里插入图片描述](https://img-blog.csdnimg.cn/361e1efee749437893368845ecdb5ade.png在这里插入图片描述
代码解释如下:

import torch
input=[3,4,5,6,5,
       4,2,2,1,5,
       4,5,6,7,8,
       5,6,7,8,9,
       1,2,4,5,6]   #输入通道数值
input =torch.Tensor(input).view(1,1,5,5) #输入的batch为1,通道为1,宽度高度为5*5
conv_layer=torch.nn.Con2d(1,1,kenel_size=3,padding=1,bias=False)  #3卷积核3*3,对输入通道扩展一圈,偏置量设置为0,否则会对输出通道的数值加上某个数值)
kenel = torch.Tensor([1,2,3,4,5,6,7,8,9]).view(1,1,3,3) #构造卷积核的数值和大小,  以及输入输出通道数
conv_layer.weight.data=kenel.data  #卷积层权重初始化
output=conv_layer(input)
print(output)

向下采样(池化层的工作原理)

池化层处理的过程之中,输入通道的个数不变,但是会改变通道的大小(在通道的各个小区域内选取(最大或平均)一个数值,拼凑成输出通道,工作原理如下:
在这里插入图片描述
池化层的意义如下:池化层也称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量(例如上述的例子之中,就把44的矩阵降维成22的样本,有效的减少了数据量),减小过拟合,同时提高模型的容错性。关于池化层的工作理解,可以点击这儿
代码实现如下:

import torch
input =[3,4,5,6,
        2,4,5,6,
        1,6,5,7,
        6,7,9,5]
input = torch.Tensor(input).view(1,1,4,4) #输入1个通道的一个样本,样本的大小为4*4
maxpooling_layer=torch.nn.MaxPool2d(kernel_size=2) #设置池化层窗口的大小为2,同时窗口移动的大小也变为了2
 
output=maxpooling_layer(input)  #最大池化层的结果赋值给output
print(output)

卷积全过程

在这里插入图片描述
卷积层——>池化层——>卷积层——>池化层——>输出向量

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值