1. 训练不好的原因
2. Small Batch v.s. Large Batch
- 大batch size更能准确地计算出梯度,在显存能允许的情况下收敛速度是比较快的,在并行计算上更占优势
- batch size太大,内存容易不够用,噪音就太小,有时会有陷入局部最小的情况
- 迭代次数少,但是每次迭代的时间长
- 对于二阶优化算法,如果估计不好一阶导数,那么对二阶导数的估计会有更大的误差,减小batch换来的收敛速度提升远不如引入大量噪声导致的性能下降,因此在使用二阶优化算法时,往往要采用大batch
- 小batch size只是用更少的计算来近似梯度,引入的随机性会更大些,方差大,易于逃离局部最优,泛化能力好,有时候能有更好的效果
- batch size太小,迭代次数多,稳定性差,可能引起恶性的震荡无法收敛。
- 工程上在使用GPU训练时,跑一个样本花的时间与跑几十个样本甚至几百个样本的时间是一样的。在工程实际中,从收敛速度的角度来说,小批量的样本集是最优的
3. python中“Non-ASCIl character in file, but no encoding declared”的解决
在最开头加上:
# -*- coding: UTF-8 -*-
4. Tensorflow参考
Tensorflow的基本概念与常用函数
5. 快捷键
Jupyter Notebook:
Shift+enter 运行代码并进入下一行
两个空格加回车可以在Markdown里面换行
pycharm: Ctrl+/ 注释与取消注释
pycharm connecting to console转半天:删掉.idea文件
l: 显示行号
nvidia-smi 查看显卡使用
6. 杂项
python数组默认右边开区间
python中x*y表示MATLAB中x.*y # 矩阵对应元素相乘
python中x.dot(y)表示MATLAB中x*y # 真实矩阵相乘
7. 卷积层
8. 反向传播BP公式推导
Neural networks and deep learninghttp://neuralnetworksanddeeplearning.com/chap2.html