深度学习实践

数据预处理

图像数据的读取

  • image data is 3xMxN 但是imshow的要求是”MxNx3 — RGB (float or uint8 array)”,深度学习tensor的结构也是 MxNxchannel
    np.rollaxis() 或者 numpy.moveaxis(a, source, destination) 函数
    或者arr.transpose((2, 0, 1)), 其中arr是某个数组可解决问题
  • 打开tiff图像 - gdal包
  • 打开图像数据 PIL包或者open-cv包, 一文直观读懂PIL的操作,这里是链接
  • 绘制图像 matplotlib

数据预处理以及数据增强问题

图像切割实践

pytorch问题

内存问题

python进程以ctrl+z杀死,后台内存还占用,以ctrl+c杀死内存释放。
nvidia-smi查看内存占用情况
kill -9 pid 杀死进程
或者sudo nvidia-smi —gpu-reset 释放内存

模型保存

save model in pytorch

学习过程保存及可视化

pytorch 方法探究

model.eval()
Sets the module in evaluation mode.This has any effect only on modules such as Dropout or BatchNorm.
model.train()
Sets the module in training mode.This has any effect only on modules such as Dropout or BatchNorm.

防止过拟合问题

过拟合和欠拟合

这次测试精度远低于训练精度

EarlyStopping

交叉验证

  • 目的:防止过拟合;求解超参数
  • 方法

超参数的求解

CNN超参数优化和可视化技巧详解
随机搜索
网格搜索
可视化卷积神经网络

L1正则和L2正则

BatchNorm 防止Covariance Shift
https://arxiv.org/pdf/1502.03167.pdf论文地址

MLE/MAP/贝叶斯的联系和区别

dropout

测试的时候实际上使用整个网络去预测数据,但是呢dropout的原理呢是先不用某些神经元以及权重,所以呢,一开始的时候,虽然能在训练集上表现很好,全局的模型是没有ready的,所以就必须长时间训练使得模型的每个神经元和权重都被训练一遍。我想应该是这样的道理