防止过拟合的方法:

防止过拟合的方法:

​ 机器学习的主要目的是从训练集上学习到数据的真实模型,在未见过的测试集上面表现良好,我们把这种能力叫做泛化能力。通常,训练集和测试集都采用摸个相同的数据分布 p ( x ) p(x) p(x) ,采样得到的样本是相互独立的,但是有来自于相同的分布,即独立同分布假设(Independent Identical Distribution assumption,i.i.d)。

​ 通俗的讲,模型的容量就是指模型拟合复杂函数的能力。一种体现模型容量的指标为模型的假设空间(Hypothesis Space)大小,即模型可以表达的函数集大小,根据多项式逼近的原理,函数的假设空间越大越有可能找到一个函数逼近真实分布的函数模型,但是过大的函数模型会导致增加搜索难度和增加计算量。同时在训练过程中会出现过拟合和欠拟合的现象。

欠拟合通常通过增加神经网络层数,增大中间维度大小和加大训练数据集容量的方法。

过拟合则通过降低网络层数,减少网络参数量,添加假设空间的约束,提前停止模型训练,正则化,Dropout,数据增强的方法。

正则化笔记见: https://blog.csdn.net/weixin_42193719/article/details/103961921
Dropout:

Dropout: 通过随机断开神经网络的连接,减少每次训练时实际参与计算模型的参数量;但是测试时会恢复所有连接,保证模型的测试获得更好的性能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VrdpZTUF-1578925600755)(C:\Users\fang-\Desktop\笔记typora\1578923553495.png)]

​ Dropout是通过判断每天连接是否符合某种预设的概率分布,如断开的概率为 p p p 的伯努利分布。上图虚线表示断开的连接。tensorflow中通过 t f . n n . d r o p o u t ( x , r a t e ) tf.nn.dropout(x,rate) tf.nn.dropout(x,rate) 实现某条连接的Dropout的功能。其中rate表示甚至断开的概率值 p p p

#添加Dropout的操作
x = tf.nn.dropout(x,rate = 0.5)

#或者直接添加:
model.add(layers.Dropout(rate=0.5))

通过分析可以得知在维持网络层数等超参数不变的情况下,插入的Dropout层数增加,网络模型训练时实际容量减少,泛化能力变强。

数据增强:

​ 由于采集样本数据和标注的代价较为昂贵,所以在有限的数据集上,通过数据增强技术可以增加训练的样本数量,获得一定程度上的性能的提高。数据增强(Data Augmentation)是指在维持一定样本标签不变的条件下,根据先验知识改变样本的特征,使得新产生的样本也符合或者近似符合数据的真实分布。

​ 因为对于图片的旋转、缩放、平移、裁剪、改变视角、遮挡局部等都不会改变图片的类别标签。

缩放: t f . i m a g e . s i z e tf.image.size tf.image.size

def preprocess(x,y):
    #x:图片的路径,y:图片的数字编码
    x = tf.io.read_file(x)
    x = tf.image.decode_jpeg(x,channels = 3)    #RGBA
    #图片缩放到244*244大小,这个大小根据网络设定自行调整。
    x = tf.image,resize(x,[244,244])

旋转: t f . i m a g e . r o t 90 ( x , k = 1 ) tf.image.rot90(x,k=1) tf.image.rot90(x,k=1)

#图片逆时针旋转180度
x = tf.image.rot90(x,k=2)

翻转:tf.image.random_flip_left_righttf.image.random_flip_up_down

#随机水平翻转
x = tf.image.random_flip_left_right(x)
#随机竖直翻转
x = tf.image.random_flip_up_down(x)

裁剪:在原图的左右或者上下去掉部分边缘像素,保持图片的主体不变,获得新的图片样本。通常都是讲图片先缩放到略大于输入尺寸在进行裁剪

#先缩放
x = tf.image.resize(x,[244,244])
#在随机裁剪
x = tf.image.random_crop(x,[224,244,3])

生成数据:(CGAN)

条件生成对抗网络:通过从生成模型在原有数据上学习到的数据的分布,生成新的样本,在一定程度上可以提高网络的性能,CGAN可以生成带有标签的样本数据。

生成模型在原有数据上学习到的数据的分布,生成新的样本,在一定程度上可以提高网络的性能,CGAN可以生成带有标签的样本数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜游神fff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值