点击上方 “小白学视觉 ”,选择加" 星标 "或“ 置顶 ”
重磅干货,第一时间送达
来自 | 知乎 作者 | MrPhD
编辑 | 深度学习这件小事
链接 | https://zhuanlan.zhihu.com/p/89566632
本文仅供交流,如有侵权,请联系删除
前言:本笔记是对keynote“Troubleshooting Deep Neural Networks”的总结。 http://josh-tobin.com/troubleshooting-deep-neural-networks
为什么需要讨论DL Troubleshooting?
80%-90%时间用于debug和tune,10%-20%时间用于推导数学或者实现。 模型为什么会表现糟糕? 数据集创建, 常见问题如下:
没有足够数据
类别不平衡
噪声标签
训练和测试的分布不同
尽可能使用最简单的模型和数据,比如在数据的一个子集上使用LeNet 简化问题
使用更小的训练数据
使用更小的图像尺寸
创建一个更简单的合成训练集
使得模型在一个batch上过拟合或者复现已知结果 Step A: Get your model to run shape mismatch、casting issue等,可以在模型创建阶段使用调试器逐步调试,具体地,shape mismatch可能存在未定义形状、错误形状等问题,比如在错误维度求和、取平均等、忘记在卷积层后flatten张量等;casting issue中常见问题:没有将图像从uint8转换到float32等。
Out of Memory,逐一去除内存密集型操作,具体地,常见问题如下:tensor过大(batch size过大或者太大的全连接层)、数据过多(将太大的数据集加载到内存中或为数据集创建分配了太大的缓冲区)、拷贝错误(由于在同一会话中创建多个模型而导致的内存泄漏、重复创建操作(例如,在一次又一次调用的函数中))
Step B: Overfit a single batchStep C: Compare to a known result在相似数据集上评估官方提供的模型实现
在benchmark上评估官方提供的模型实现
非官方模型实现
参考文章结果(没有代码)
自己代码实现在benchmark上的结果
相似模型在相似数据集上的结果
非常简单的baseline,如线性回归
使用bias-variance decomposition决定下一步措施 Test error = irreducible error + bias + variance (+ distribution shift) + val overfitting (train, val, and test all come from the same distribution) 如果欠拟合,使得模型更大;如果过拟合,增加数据或者添加正则化 解决分布转换 (distribution shift): 如果验证集上的结果好于测试结果,在验证集上过拟合。上述情况通常发生在小验证集上或者大规模超参数调整 由粗到细地随机搜索 优化器:batch size?学习率?beta1,beta 2? 优点:实现非常简单、能够产生好结果
缺点:不高效、需要先验知识
先在大区域中找到使得结果比较好的子区域,重复上述过程
优点:可以缩小非常高性能的超参数、实际使用最多的方法
缺点:somewhat manual process
下载1:OpenCV-Contrib扩展模块中文版教程 在「小白学视觉 」公众号后台回复: 扩展模块中文教程
, 即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理 等二十多章内容。 在「小白学视觉 」 公众号后台回复:Python视觉实战项目 , 即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别 等31个视觉实战项目,助力快速学校计算机视觉。 在「小白学视觉 」 公众号后台回复:OpenCV实战项目20讲 , 即可下载含有20 个基于OpenCV 实现20个实战项目 ,实现OpenCV学习进阶。 交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉 、传感器、自动驾驶、 计算摄影 、检测、分割、识别、医学影像、GAN、算法竞赛 等微信群(以后会逐渐细分), 请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过 。添加成功后会根据研究方向邀请进入相关微信群。请勿 在群内发送广告 ,否则会请出群,谢谢理解~