CNN计算原理

如题所述

第1个回答  2022-06-07

CNN编码器与解码器:
神经网络为线性变换,当输入向量维度高于输出向量维度时,神经网络相当于一个编码器,实现高维特征的低维特征提取.反之,输入向量维度小于输出维度,神经网络相当于一个解码器,实现低维特征的高维重建.
在数学中, (f*g)(n) 为 f,g 的卷积,在连续空间定义为:

离散定义为:

将图像看成三维矩阵,卷积操作如下:

BN是为了克服神经网络难以训练而提出的,在较深的网络结构中反向传播防止梯度弥散,在遇到train收敛速度很慢或者梯度爆炸等状况可以使用BN,提高模型精度.
CNN正向传播:

训练过程通过反向传播更新权重,主要采用chain rule(链式求导法则):

零均值归一化/Z-score标准化

处理后数据变为均值为0,标准差为1的正态分布.通常神经网络和机器学习中很多问题都是基于正态分布的假设.这种参数变化不会改变分布自身形状
数据非标准化的原因可查看这篇文章 here
正态分布Box-Cox变换
将一个非正态分布转换为正态分布,使得分布具有对称性.


直方图均衡化
通过图像的灰度值分布,对图像对比度进行调整,可以增强局部对比度.

缩小features尺寸,实现upsample,减少计算量,防止网络过拟合
Avg Pooling
均值池化: 取卷积核平均值作为输出
Max Pooling
最大值池化操作: 取卷积核中最大值作为输出
一般情况池化区域不重叠 4*4 到 2*2 ,对于max pooling正向计算需要记录最大值所在位置,方向传播将参差传到最大值位置,其余位置补0.Avg pooling反向时将参差均分,传递到每个位置.

模拟人的神经元,只对部分神经元的输入做出反应.加入非线性因子,弥补神经网络的线性映射的不足.增强模型的表达能力.

https://www.zhihu.com/question/22298352
https://blog.csdn.net/panglinzhuo/article/details/75207855

相似回答