![v2-620d5c25592b07e2c3b01b207e0cad04_1440w.jpg?source=172ae18b](http://img-01.proxy.5ce.com/view/image?&type=2&guid=f6e42a81-d92e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-620d5c25592b07e2c3b01b207e0cad04_1440w.jpg?source=172ae18b)
我是从keras入门深度学习的,第一个用的demo是keras实现的yolov3,代码很好懂(其实也不是很好懂,第一次也搞了很久才弄懂)
然后是做的车牌识别,用了tiny-yolo来检测车牌位置,当时训练有4w张图片,用了一天来训练,当时觉得时间可能就是这么长,也不懂GPU训练的时候GPU利用率,所以不怎么在意,后来随着项目图片片的增多,训练时间越来越大,受不了了,看了一片文章才注意到GPU利用率的问题.想到要用tensorflow原生的api去训练,比如用tf.data.dataset
就找到了这个tensorflow原生实现yolo的项目,在训练的时候发现他没加梯度衰减,训练了一段时间total loss下不去了,所以加了一个梯度衰减。想写一下文章,小白的第一篇文章哈哈哈,大神别喷我的内容太简单
YunYang1994/tensorflow-yolov3github.com![v2-1cb835d2c754277ae6d562d18a19db6f_ipico.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=f6e42a81-d92e-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-1cb835d2c754277ae6d562d18a19db6f_ipico.jpg)
他好像改了train.py
原来是这样的
import
然后我发现没有梯度下降,所以就找了怎么实现
实现如下
optimizer = tf.train.AdamOptimizer(LR)
改为
global_step = tf.Variable(0, trainable=False)
learning_rate = tf.train.exponential_decay(LR,100,0.93,staircase=True,global_step=global_step)
optimizer = tf.train.AdamOptimizer(learning_rate)
learningrate 是梯度的类,LR是初始梯度,100是每一百次初始梯度乘以衰减度,这里是第三个参数0.93代表了衰减度,globalstep_step = global_step是一定要加的,不然梯度一直保持了初始梯度。
最后加个打印
tf.summary.scalar('learning_rate',learning_rate)
就可以爽快的去训练了