写这篇博客的原因主要是为了总结下在深度学习中我们常会遇到的一些问题,以及不知道如何解决,我准备把这个部分作为一个系列,为了让大家少走一些坑,对于本博客有什么错误,欢迎大家指出,下面切入正题吧。

1. 深度学习,一个令人头疼的问题就是如何调参?

简而言之,如果数据集复杂的话,那么就要增加网络的层数,模型欠拟合了,加节点。

2. 关于验证集的loss曲线和acc曲线震荡,不平滑问题

出现loss震荡不平滑的原因可能如下:

(1) 学习率可能太大

(2) batch size太小

(3) 样本分布不均匀

(4) 加入正则化

3. 对于模型过拟合问题

(1) 换一个简单模型

(2) 增加数据

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

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

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

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

5. 在keras中如果想输出训练过程中训练集合验证集准确值和损失值得变化,可以采用回调函数,具体参考以下方式:

  1. history=model.fit()
  2. plt.plot()
  3. plt.plot(history.history['val_acc'])
  4. plt.title('model accuracy')
  5. plt.ylabel('accuracy')
  6. plt.xlabel('epoch')
  7. plt.legend(['train', 'test'], loc='upper left')
  8. plt.show()
  9. # summarize history for loss
  10. plt.plot(history.history['loss'])
  11. plt.plot(history.history['val_loss'])
  12. plt.title('model loss')
  13. plt.ylabel('loss')
  14. plt.xlabel('epoch')
  15. plt.legend(['train', 'test'], loc='upper left')
  16. plt.show()

说明:如果你想把每个epoch的accuray结果保存在txt中也是可以的

  1. accy=history.history['acc']
  2. np_accy=np.array(accy)
  3. np.savetxt('save.txt',np_accy)

6. 如果训练中发现loss的值为NAN,这时可能的原因如下:

(1)学习率太高

(2)如果是自己定义的损失函数,这时候可能是你设计的损失函数有问题

7. 对于新手来说,一个比较困惑的地方可能就是不明白,loss值和acc之间的关系,有时候即使acc高,但是loss值也高

一般来说,较高的acc对应的loss较低,但这不是绝对,毕竟他们是两个不同的东西,所以在实际实现中,我们可以对两者进行一个微调。

8. 关于模型epoch轮数?对于一个新模型,迭代多少次才可以收敛,具体应该怎么设置

关于epoch设置问题,我们可以设置回调函数,选择验证集最高的acc作为最优模型。

9. 关于BN和dropout,应该使用哪个?

其实这两个是两个完全不同的东西,BN针对数据分布,dropout是从模型结构方面优化,所以他们两个可以一起使用,对于BN来说其不但可以防止过拟合,还可以防止梯度消失等问题,并且可以加快模型的收敛速度,但是加了BN,模型训练往往会变得慢些。

10. 这一条作为总结吧,多看看keras官方文档,里面基本能找到你需要的东西。这篇暂时就酱~

最新文章

  1. C和指针 第十六章 习题
  2. USACO翻译:USACO 2013 DEC Silver三题
  3. 剑指Offer 顺时针打印矩阵
  4. yii2图片上传
  5. 配置samba服务器
  6. Hbase shell详情
  7. windows下mysql增量备份与全备份批处理
  8. tomcat version
  9. 最简单的视音频播放示例7:SDL2播放RGB/YUV
  10. IOS 调用拨打电话Api
  11. HDU 4291 A Short problem(2012 ACM/ICPC Asia Regional Chengdu Online)
  12. windows8.1安装之后的感想
  13. requests爬取网页的通用框架
  14. DriverStudio开发PCI设备DMA数据传输
  15. 数据库入门之运行原始 SQL 查找
  16. 20165303魏煜第一周kali安装
  17. 在ionic中使用短信验证码倒计时
  18. jQuery基础 (一)——样式篇(认识jQuery)
  19. AngularJs -- 模 块
  20. Silverlight自定义控件系列 – TreeView (4) 缩进

热门文章

  1. 078-PHP数组排序,两次循环法
  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-align-justify
  3. Python MySQL 删除表
  4. P1031 查验身份证
  5. java处理浮点数小数点后几位
  6. 常见的http错误
  7. windows driver 分配内存
  8. 抗干扰性极强非接触式读卡13.56mhz芯片:SI522
  9. Angular全局数据管理与同步更新
  10. 19 01 19 视图 HttpReqeust对象 GET属性 POST属性 HttpResponse对象