目录
此博客用于积累一些优秀的博客和文章,持续更新。
深度学习基础
数学知识
深度学习知识
自学大礼包
L1与L2损失函数和正则化的区别
英文原文:Differences between L1 and L2 as Loss Function and Regularization
中文翻译:L1与L2损失函数和正则化的区别
正则化
深度学习中的重要工作
ResNet
- 对ResNet的理解
从多人投票系统的角度解读,“ResNet的深度并没有很深”。 - 极深网络(ResNet/DenseNet): Skip Connection为何有效及其它
- 为什么ResNet和DenseNet可以这么深?一文详解残差块为何有助于解决梯度弥散问题。
Normalization
BatchNorm
- 深度学习中 Batch Normalization为什么效果好?
知乎上关于BN的一个问题,其中魏秀参的回答第4点,我不坏的回答中的数学解释非常好。 - Pytorch中的Batch Normalization layer踩坑
特别是关于冻结BN的写法。
Attention
GRU
Graph
深度学习应用技巧
网络调试
- 笔记之Troubleshooting Deep Neural Networks
比较general的网络调试调参思路介绍,是一篇英文keynote的翻译版本,原文见Troubleshooting Deep Neural Networks - Andrej Karpathy的一篇推特及其评论区
提供了一些常见的调参思路,还有可能会犯的错误。我总结了一下写了一篇博客:神经网络常见错误(Most Common Neural Net Mistakes) - Common causes of nans during training
stackoverflow上的一篇回答,列出了一些训练过程中出现的NaN的常见情况,包括学习率,学习率更新策略,损失函数,输入数据,BatchNorm等多个方面。 - 警惕!损失Loss为Nan或者超级大的原因
- 谈谈深度学习中的 Batch_Size
探讨batch size对网络表现的影响。
显存计算
- 浅谈深度学习:如何计算模型以及中间变量的显存占用大小
详细介绍了模型占用显存的来源和计算方法。 - 如何在Pytorch中精细化利用显存
讲解了如何利用Pytorch深度学习框架的一些特性,查看当前使用的变量所占用的显存大小,以及一些优化工作。 - 再次浅谈Pytorch中的显存利用问题(附完善显存跟踪代码)
博主分析了Pytorch-Memory-Utils这个工具来检测在训练过程中关于显存的变化情况,分析如何正确释放多余的显存。
损失函数
- Pytorch中Balance binary cross entropy损失函数的写法
在正负样本不平均的时候有效,该文章提供了一种写法。
PyTorch
- PyTorch 有哪些坑/bug? - 知乎
高赞回答中提到的常见问题:cudnn的bug(高斯定理的回答),distributed 的坑(KAIZ的回答),数据类型转换的注意点(小磊的回答),动态图的坑(陈诚的回答),其他一些总结(御宅暴君的回答)… - pytorch指定层冻结。初始化权重
训练特定层,冻结其它层
的四个应用场景写的非常好。 - pytorch 多GPU训练总结(DataParallel的使用)
两部分内容:多gpu官方思路有张图,解决多GPU 负载不均衡的问题做法。 - 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
写的非常好,以后写源码分析就可以参考这篇的思路。 - pytorch中的grid_sample和affine_grid
对affine_grid解释的比较详细,需要注意的是计算的时候这篇博客的图片里的公式有错误,分母应该是 w − 1 w-1 w−1和 h − 1 h-1 h−1 - How does grid_sample(x, grid) work?
Pytorch论坛上的一个帖子,评论区有一些很详细的回答。 - Pytorch中的仿射变换(affine_grid)