首页 > 编程知识 正文

神经网络防止过拟合,开源神经网络代码

时间:2023-05-06 03:59:33 阅读:21390 作者:2621

掉话层要解决的问题:一些机器学习的模型在模型参数太多、训练样本太少的情况下,这样训练的模型容易出现拟合现象。

内容:训练时,各神经元以概率p保持。 也就是说,以1-p的概率停止。 每个前向传播所保留的神经元是不同的。

优点:1.多模型均值:不同的固定神经网络有不同的拟合,取多个均值可能抵消一些相反的拟合,但Dropout每次都会停用不同的神经元,导致多个模型的均值2 .减少神经元之间的依赖:由于两个神经元不一定同时有效,减少了特征之间的依赖,使网络学习具有鲁棒性。 神经网络不应对某些特征敏感,而应从许多特征中学习更多共同规律,这也起到了正则化的作用。 3 .生物进化: Dropout类似于性别在生物进化中的作用。 物种为适应环境变化,繁殖时采用雄性和雌性各半的基因组合,可以适应更复杂的新环境,避免单一基因的拟合,在环境变化时不会灭绝。

pytorch示例:

# PyTorch将元素设置为0以实现Dropout层。 第一个参数是设定为0的概率,第二个是是否当场操作

dropout=nn.dropout(0.5,inplace=False ) )。

轮询层的本质:下采样

作用:降低特征图参数量,提高计算速度,增加感受区。 可以让模型关注全局特征,而不是局部位置。 可以保留一些重要的特征信息,提高容错性,并在一定程度上起到防止拟合的作用。

分类:最大值池化、平均值池化

参数: kernel_size,stride

pytorch示例:

max_pooling=nn.maxpool2d(2,stride=2) )。

aver_pooling=nn.avgpool2d(2,stride=2)。

BN层要解决的问题:卷积网络设计得越来越深,但网络很难训练收敛和调制。

内容:1.对各batch输入特征进行白化操作,即均值方差过程。

进行线性变换操作

和是新引入的可学习参数的优点,可以缓解梯度的消失,加速网络的收敛。 简化参与,使网络更加稳定。 防止过度拟合。

使用pytorch :

1导入途径

2 from torch import nn

要使用3#bn层,必须传递名为num_features的参数,即特征的通道数

4bn=nn.batchnorm2d(64 ) ) )。

5打印(bn )

6batchnorm2d(64,eps=1e-05,momentum=0.1,affine=True,track_running_stats=True )

7

8 # eps添加表达式中的参数,momentum添加平均方差的运动量,affine添加可学习参数

9 input=torch.randn (4,64,224,224 ) )。

10output=bn(input )

11 # BN层不改变输入、输出特征的大小

12打印(output.shape )。

13 torch.size ([ 4,64,224,224 ]

所有连接层的内容:每个节点连接到上下层的所有节点,输入和输出扩展到一维向量

缺点:最致命的问题在于其参数量的庞大。 许多参数冗馀,也容易发生过拟合。

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