卷积神经网络CNN(二)——基本性质

本文介绍了卷积神经网络(CNN)的基本性质,包括填充(padding)以保持输出尺寸,步长(stride)对卷积的影响,池化(pooling)的下采样作用,以及Dropout技术防止过拟合。CNN通过权值共享减少参数,其通道结构逐渐增多。文章详细讲解了每种技术的代码实现,并讨论了CNN在图像处理中的优势,如特征提取和不变性。
摘要由CSDN通过智能技术生成

k这一篇文章将在最基础的卷积神经网络的机构上做一些优化使其效率更高。

首先我们说明一下CNN和FNN比的优势

参数量:CNN是权值共享,参数较少(w)

通道:全连接是NV结构(压缩降维),卷积的channel会逐渐增多(把失去的数据补充回来,在c上体现)

一、 填充(padding)

前面可以发现,输入图像与卷积核进行卷积后的结果中损失了部分值,输入图像的边缘被“修剪”掉了(边缘处只检测了部分像素点,丢失了图片边界处的众多信息)。这是因为边缘上的像素永远不会位于卷积核中心,而卷积核也没法扩展到边缘区域以外。这个结果我们是不能接受的,有时我们还希望输入和输出的大小应该保持一致。为解决这个问题,可以在进行卷积操作前,对原矩阵进行边界填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常都用“0”来进行填充的,如下图所示:

 

通过填充的方法,当卷积核扫描输入数据时,它能延伸到边缘以外的伪像素,从而使输出和输入size相同。

常用的两种padding:

(1)valid padding:不进行任何处理,只使用原始图像,不允许卷积核超出原始图像边界

(2)same padding:进行填充,允许卷积核超出原始图像边界,并使得卷积后结果的大小与原来的一致

代码实现:

import torch
import torch.nn as nn
#不使用填充
no_padding_layer = nn.Conv2d(1, 1, 3, 1, padding=0, bias=False)
x = torch.randn(1, 1, 5, 5)#输入为NCHW
y = no_padding_layer(x)
print(y.shape)#1,1,3,3

#使用填充
padding_layer = nn.Conv2d(1, 1, 3, 1, padding=1, bias=False)
y1= padding_layer(x)
print(y1.shape)#1,1,5,5
</
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊头发长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值