零星积累
权值衰减==带1/2乘子的L2正则。
- 缓解拟合
可通过如下方案:正则化(L1, L2),但正则化方法不是提升泛化能力的本质要素。Dropout,Early Stopping.
CNN中不要用dropout。 两个原因:1)dropout is generally less effective at regularizing convolutional layers;卷积本身参数量就少,they need less regalarization to begin with. 此外,feature map编码的空间关系激活是高度相关的,dropout会破坏这种空间关系;2)类似VGG16这样包含全连接层的模型会在全连接层用dropout,但现在大部分架构都去掉了全连接层,改为用global average pooling. 博主做了实验发现加了dropout性能会降低,而加入BN性能会有提升。
- 集成学习
- 组合具有低皮尔逊相关系数的弱学习器
- 多数投票的方式来组合弱学习器
- 平均:比如:0.5Unet + 0.5LinkNet34
LinkNet是Unet的升级版baseline,使用了Resdiual结构,非常适合使用resnet encoder。很轻便,有开源的预训练好的精度。感受野大概在700多。
- 超参数的选择
- 网络架构、核大小、层数、激活函数、损失函数、所用的优化器(梯度下降、RMSprop)、批大小、训练的 epoch 数量等等。
- 使用已经得到验证的架构,而不是构建自己的网络架构,然后根据自己的目的做一些调整。
- 怎么选取训练神经网络时的Batch size?
batch size 以128为分界线,向下(*0.5)和向上(*2)训练后比较测试结果,若向下更好,则再*0.5,直到结果不再提升。
分割中loss的选择(考虑loss的饱和性,不要因饱和导致没有梯度反传)
BCE loss在预测结果接近0和1的时候会出现loss反传的截断,因此需要加一些线性的损失。图像增广要考虑任务本身的情况,增广的图像填补整个数据空间的稀疏部分,不是创造新的数据。
- 卫星车道线图像分割用的增广:test time aug: ver-flip, hor-flip, diag-flip,对不同翻折下的图像进行预测,把结果平均,最终性能提升了3个点。
- loss反传的时候用random.random()*loss。
CNN troubleshooting-量子位编译
优质博文/技巧
201801-Intel 2DUnet中Upsampling vs Transposed Convolution
在BraTS数据集上做实验,结论是没显著差别,但是transposed conv训练需要更多时间(参数多)。
此外,将Unet中通道数量减半变为(32→64→128→256→512)不影响效果。-
imgcat in Python
10 Lessons Learned From Participating in Google AI Challenge
比赛的难点:训练数据的label有noisy,测试集的label没有noise。(即训练集和测试集分布不一样)
Nvidia driver 410.72 , CUDA 10.0, cuDNN 7.3.1 and NCCL 2.3.5 was only supported in Ubuntu 18.04. So I had to recompile Google’s tensorflow from source using CUDA 10. Here is a tutorial explaining how doing it.
Optimize your software stack for the task. E.g. Recompile tensorflow from source, as the pre-built downloadable version is compiled for maximum CPU compatibility and not maximum performance.
Mixed-precision is one of the key elements which decided me to go with a rtx-2080-ti versus a cheaper gtx-1080-ti. The rtx-2080-ti is the first non-professional graphic card from NVIDIA supporting natively 16-bits floating point (fp16). how to implement mixed-precision using tf
如果测试集是balanced,如何优化自己的方案?1st solution; Good predictions postprocessing