news 2026/10/10 9:09:17

Network架构1——卷积神经网络CNN

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Network架构1——卷积神经网络CNN

label的维数决定了预测的种类的数量

一张图片怎么输入计算机中?一个图片的每个点都是由rgb(包括三个不同数值的颜色形成的),所以我们可以将所有数值提取出排列形成矩阵,作为计算机的输入

(扩展:tensor可以理解为维度大于二的矩阵)

设置更多的参数可以增加模型的弹性和能力,但是也更容易造成overfitting 的风险

overfitting的产生条件我们后续会继续介绍

下面我们从不同的视角来构建图片输入方法

视角一:我们在进行输入pattern时有时不需要输入所有的图像,只需要输入小部分的pattern就可以输入网络进行判断

我们可以将所有的输入划分为多个Receptive field,然后分别输入各自的函数

Receptive field的划分方法是不固定的,也可以重叠

Receptive field相关参数的设置方法:

kernel size一般都设置为3*3,如果设置为7*7就有点大了,stride是移动的步长,一般设置小于kernel size的长度,防止有pattern在两个field的交界处,padding是指移动超出范围的空白区域

视角二:同样的pattern可能出现在不同的图片区域

如下图所示,上下两个是不同的neuron,侦测的范围不同,但是做的事情其实是一样的

解决方法:共享参数,两个neuron使用相同的weight,但是输入是不同的,但是两个划分区域一样的neuron是不能共享参数的

我们把两组共用参数的neuron其中共同的参数称为filter1,filter2等等

简化方法总结:fully connected layer的复杂度是最高的,划分receptive field区域降低了复杂度,然后使用共享参数形成convolutional layer进一步降低

fully connected layer适用于各种训练情形,但是convolutional layer可以针对图像训练产生更好的效果,如果用于除了影像之外的训练,要考虑一下训练对象是否有和影像一样的特性,即使model bias大一点也无所谓

Convolutional Layer的另一个解释版本

可以将convolution看作由大量的filter组成的,每一个filter用来定位pattern,channel的模式是由图片的格式决定的,如果是彩色的就是三种rgb,如果是黑白的就是两种

那么我们是怎么通过filter来定位图像的形状的呢?列如已有一个对角线均为1的filter1,然后和黑白矩阵图像相乘,每次移动一个单位继续相乘,从左上角移动到左下角,这样我们就可以看到乘积结果为的说明图片中的该部分3*3矩阵的对角线全为一,这个filter就可以用来侦测对角线为直线的情况

同理,我们还可以设计其他的filter来侦测其他情况,例如filter就可以来探测中间第二列直线的情况

由此可推出有64个filter就会产生有64个channel的新的image,同时,如果有多层的convolution,因为filter的高度就是要处理的影像的维度,列入第一层是只有黑白的一维度影像,而现在要把第一层的convolution输出作为输入,那么新的filter的层数就要变成第一层输出的64维

那这样的处理方式会不会导致处理区域一直是3*3太小了?

不会,当我们处理第二层的concolution的右上角3*3矩阵时,它实际对应的是初始矩阵中的5*5矩阵,所以范围是越来越大的

所以只要network够深,就不要害怕侦测不到比较大的pattern

其实我们的第一种解释和第二种解释说的是同一个事情,filter中的元素就是我们第一种解释方法中共用 的参数

我们说的第一个解释当中,有一个是在不同的receptive fields中使用相同的参数,其实就是第二种解释当中的每个filter都扫过这个图片

总结:

视角三:将一张大的复杂的图片进行简化和缩小,不会改变内部的结构——由此引出Pooling结构

首先介绍Max Pooling

它是指,在filter1和filter和矩阵相乘后形成4*4矩阵,划分为四个小区域,每个区域选择数值最大的那个

这样达到缩小图片的效果

但是这样对细节有点伤害,现在不怎么使用了,因为计算能力足够了

Flatten是指把矩阵中的所有东西拉直

应用:用CNN下围棋

下围棋是一个分类问题,输入棋盘情况,输出下一个位置,这个问题CNN的效果比Fully-connected更好

影像和下围棋的共同之处在于:1,一些重要的pattern只占一小部分 2有同样的pattern出现在期盼上的不同区域,但是下围棋的结构当中并没有使用pooling

CNN并不能处理图像放大缩小或者旋转的问题

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 9:06:43

智慧城市管理中心平台实战:SpringBoot + RabbitMQ + WebSocket

1. 先说清楚这是个什么东西这段时间总有人私信问我“智慧城市管理中心平台”到底是个什么样的项目,能不能拿来做毕业设计或者转行练手。我干脆把实际开发中沉淀下来的这套东西完整梳理一遍。它不是那种PPT里的智慧城市,而是一个能真正跑起来的城市治理业…

作者头像 李华
网站建设 2026/10/10 9:06:20

atomic 原子操作原理与 CPU 锁总线/缓存一致性(MESI)

atomic 原子操作原理与 CPU 锁总线/缓存一致性(MESI) 一、核心概念与架构设计 上一篇拆解 sync.Mutex 时,快速路径的第一步就是对 state 做一次原子读。没有 sync/atomic,Mutex、WaitGroup、Channel 里的等待队列计数,…

作者头像 李华