keras中的调模型方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaomifanhxx/article/details/82859613

1  深度学习中,如果数据集比较复杂,那么就增加网络的层数;模型欠拟合了,就增加模型深度。

2  关于验证集的acc与loss曲线震荡,不平滑问题,可能原因如下:1)学习率可能太大;2)batch size可能太小;3)样本分布不均匀;4)加入了正则化(???)

3  模型过拟合解决方法:1)换用小的网络;2)进行数据增强;

4  对于自己定义的损失函数loss,如果我们加载模型,常会提示loss错误,此时解决方法有两个:

1)首先用json保存模型,然后保存权重,加载模型时,先load模型,然后载入权重;

2)load_model函数提供了custom_objects参数,所以加载时需要加入这个参数,假设自定义参数loss的函数名为cosloss,所以加载时应采用以下方式

model = load_model('model.h5', {'cosloss':cosloss}) 

5  如果在训练中,发现loss的值为NAN,原因可能如下:

1)学习率太高;

2)如果是自己定义的损失函数,可能是自己设计的损失函数有问题;

7  对于新手来说,不明白loss与acc的关系,为什么有的时候acc高,但是loss也比较高?一般来说acc越高,loss就越低,但这并不是绝对的,毕竟他们是两个不同的东西,在实际中,我们可以对这两个进行微调。

8  关于bn与dropout的区别:它们两个都能起到防止过拟合的作用,但它们是完完全全不一样的东西,bn是针对数据分布,而dropout是针对模型结构方面的优化,所以它们两个可以一起使用,对于bn来说。其不仅能够防止过拟合,还可以防止梯度消失,并且可以增加模型的收敛速度,但是加了bn,模型的训练速度会变慢。

9  未完待续

参考博客:https://blog.csdn.net/momaojia/article/details/72877953

猜你喜欢

转载自blog.csdn.net/xiaomifanhxx/article/details/82859613