首页 > 编程知识 正文

卷积神经网络flatten层,如何选用神经网络

时间:2023-05-06 14:15:13 阅读:21386 作者:491

前言

我们知道在神经网络训练开始之前,输入数据需要规范化,为什么要规范化呢? 其理由是神经网络学习过程的本质是为了学习数据分布,训练数据和测试数据的分布不同,网络泛化能力也会大幅降低,而各训练数据的分布不同,网络就会适应每次迭代不同的分布

深度神经网络训练是一个复杂的过程,随着网络前几个阶段的细微变化,后几个阶段会逐渐累积扩展。 当网络某一层的输入数据分布发生变化时,该层的网络需要适应学习这一新的数据分布,因此在训练过程中训练数据的分布持续变化会影响网络的训练速度。

网络训练后,参数会更新。 不仅是输入层的数据,输入层的数据也是人工归一化的,所以以后网络各层的输入数据分布总是在变化。 因为训练时上一层的训练参数更新后,后一层的输入数据分布会发生变化。 例如,网络的第2层输入是根据第1层参数和input计算的,但由于第1层参数在训练过程中一直在变化,因此输入数据的分布会随后的每一层而变化。 我们把网络中间层在训练中数据分布的变化称为“Internal Covariate Shift”。 为了解决培训过程中中间层数据分布发生变化的情况,Batch Normalization应运而生。

BN层

如活化层、卷积层、全连接层、池化层,BN层也属于网络的一层。 前面叙述的网络,除了输出层以外,由于下层的网络在训练时更新了参数,所以下层的输入数据分布发生了变化。 此时,我们在输入各层时,会想如果追加预处理操作该多好。 例如,标准化可以解决上面提到的“Internal Covariate Shift”问题。

事实上,paper算法的本质原理是在输入网络的每一层时插入规范化层。 也就是说,进行规范化处理后,进入网络的下一层。 但是,这里的正规化层并不像我们想象的那么简单,而是可以学习并且有参数的网络层。

其中,

标准偏差正规化结果,即

在、

学习参数。

参考文献https://arxiv.org/ABS/1502.03167 arxiv.org标准化层Normalization - Keras中文文档keras.io

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。