tensorflow 优化的时候不动
发布网友
发布时间:2022-05-04 17:26
我来回答
共1个回答
热心网友
时间:2022-06-24 08:56
原因分析:
numpy或者TensorFlow那块肯定有一个除了问题,分别调试TensorFlow的代码和numpy的代码分开执行。发现在转换数组的时候np.array()执行效率极低。
解决方案:
更改numpy版本
tensorflow 加速优化方法
1. stochastic gradient decent(CGD)
将data分小批放入神经网络中进行计算
W += -Learning rate * dx
缺点:选择合适的learning rate比较困难
速度慢
容易收敛到局部最优,并且在某些情况下可能被困在鞍点
2. momentum
模拟物理里动量的概念,积累之前的动量来替代真正的梯度。(利用斜坡的惯性)
m = b1 * m - Learning rate * dx
W += m
特点:在相关方向加速SGD,抑制振荡,从而加快收敛
依靠人工设置全局学习率,中后期分母上梯度平方的累加将会越来越大,使得训练提前结束
3. adagrad
每一个参数的更新都有自己的学习率(不好走的鞋子)
v += dx^2
W += -Learning rate * dx / √v
特点:前期放大梯度,后期约束梯度,适合处理稀疏梯度
4. RMSProp
综合了momentum和adagrad的优势
v = b1 * v + (1 - b1) * dx^2
W += -Learning rate * dx / √v
特点:依赖于全局学习率
适合处理非平稳目标 - 对于RNN效果很好
5. Adam(又快又好)
m = b1 * m + (1 - b1) * dx
v = b2 * v + (1 - b2) * dx^2
W += -Learning rate * m / √v
特点:结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
对内存需求较小
为不同的参数计算不同的自适应学习率
也适用于大多非凸优化 - 适用于大数据集和高维空间
6. 优化器
用于改变学习效率