深度学习编程笔记:kears基础4:过拟合
一.数据集划分
一般的划分,训练集,验证集加测试集
每一次epoch都对训练集和验证集进行重新划分
-
下面的这个程序可以替代上面这个
-
-
db_train_val是总的数据集,validation_split=0.1表示以训练集0.9,验证集0.1的比例对数据集进行动态切割
二.正则化
- 这里的θi代表的是各层的参数如w和b。
- 这里的0.001就是λ,是正则项的权值。
第二种添加正则化的方式
- 可以更灵活的对网络层里面的参数做调整。
三.动量和学习率
-
下面是几种优化器权值超参数
-
学习率的动态调整,刚开始可以大一的,慢慢变小
四.early stopping, dropout
early stopping
dropout
-
代码中添加dropout,在层与层之间加个dropout层
下面代码表示每根线有0.5的概率断掉 -
在训练集和测试集中的不同,下面training表示当前状态是train还是test,不然会默认一样,dropout用于train。
stochastic gradient descet(随机都是不是胡乱随机,是符合一种分布)
- 在求loss对w求偏导时不再是对所有样本进行求偏导,而是对一个batch求偏导。
- 把在数据集上的所以的梯度的均值变成一个在batch上所有梯度的均值