卷积神经网络基础知识

why CNN?

  • 我jio得学习一个东西时,始终要不断的问自己这个东西有啥用,应该怎么用,这样才不至于学完之后大脑还是一片空白(不好意思,我看完很多书之后都是这种感觉hhh)

  • 那么我们为啥要用NN?之前的机器学习方法譬如SVM,贝叶斯分类器等等不好吗?
    在现在的大数据时代。。。不好意思,感觉现在知识还完全不够,可能等我学完之后可以稍微说一下自己的看法吧hhh

  • CNN基础知识
    一个CNN大概包括卷积层,池化层,全连接层等几个部分

  • 卷积层:利用卷积核(filter)对输入数据进行特征提取,filter可以看作是一个指定窗口大小的扫描器

  • 池化层:是一种提取数据核心特征的方式,不仅实现了对原始数据的压缩,还大大减少了参与模型计算的参数,提高了计算效率,emmmm,貌似跟卷积层也没有什么区别鸭

  • 全连接层:主要是将输入图像在经过卷积和池化操作后提取的特征进行压缩,并完成模型的分类功能,这其实就是NN的最初构造

  • 下面我们详细展开介绍:

  • 假如输入图像是32 *32 * 3(三个参数分别是指:高度,宽度,通道数),那么我们可以定义卷积核为 3 * 3 * 3 or 5 * 5 * 3 or 7 * 7 * 3 or 其他,但高度和宽度一般小于输入图像的高度和宽度,需要特别注意的是卷积核的深度一定等于输入图像的通道数

  • 卷积核的步长(stride)代表卷积核窗口每次经过的图像上的像素点数,一般取值为1或2

  • 边界填空(Padding)是指在输入图像的最外层加上指定层数的值全为0的像素边界,可以设置两个参数Same,Valid。第一个代表加Padding,第二个代表不加。一般取值为1或2

  • 重要:卷积通用公式

W o u t p u t = ( W i n p u t − W f i l t e r + 2 p ) / s + 1 W_{output}=(W_{input}-W_{filter}+2p)/s+1 Woutput=(WinputWfilter+2p)/s+1

H o u t p u t = ( H i n p u t − H f i l t e r + 2 p ) / s + 1 H_{output}=(H_{input}-H_{filter}+2p)/s+1 Houtput=(HinputHfilter+2p)/s+1
卷积层的代码示例:

torch.nn.Conv2d(1, 64, kernel_size = 3, stride = 1, padding = 1)

五个参数分别代表:输入通道数(卷积核的深度,与输入图片通道数一致),输出通道数(卷积次数),卷积核大小,卷积核移动步长,Padding值

  • 常用的池化层有平均池化层和最大池化层 池化层也需要定义一个滑动窗口,但这个窗口仅用于提取重要特征,没有任何参数
  • 一般定义池化窗口的大小为1 * 1或 2 * 2,池化层的深度和特征图的深度一致,一般定义滑动窗口的步长为2
  • 池化层的输入输出通道数一致
  • 池化通用公式

W o u t p u t = ( W i n p u t − W f i l t e r ) / s + 1 W_{output}=(W_{input}-W_{filter})/s+1 Woutput=(WinputWfilter)/s+1

H o u t p u t = ( H i n p u t − H f i l t e r ) / s + 1 H_{output}=(H_{input}-H_{filter})/s+1 Houtput=(HinputHfilter)/s+1
池化层的代码示例:

torch.nn.MaxPool2d(stride = 2, kernel_size = 2)
  • 全连接层主要有输入,权重参数,激活函数三个部分组成, 输入的是经过卷积层和池化层的核心特征,经过激活函数后得出了最终的分类结果

全连接层的代码示例:

torch.nn.Linear(14*14*128, 1024)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值