介绍
使用Tensorflow怎么实现梯度异步更新?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>先计算梯度:强>
#,模型部分 时间=Optimizer tf.train.GradientDescentOptimizer (1) 时间=gradient Optimizer.compute_gradients(损失),,#,每次计算所有变量的梯度 时间=grads_holder [(tf.placeholder (tf.float32,,形状=g.get_shape ()),, v), for (g, v),拷贝梯度)#,将每次计算的梯度保存 时间=optm Optimizer.apply_gradients (grads_holder), #,进行梯度更新 #,初始化部分 时间=sess tf.Session () 时间=init tf.global_variables_initializer () sess.run (init) #,实际训练部分 时间=grads [],,,,,,,,, #,定义一个空的列表用于存储每次计算的梯度 for 小姐:范围(batchsize):拷贝,#,batchsize设置在这里 x_i 才能=,…,,,,,,,#,输入 y_real 才能=,…,,,,,,#,标签 时间=grad_i 才能;sess.run(梯度,,feed_dict={x_i,输入:,输出:,y_real}), #梯度计算 grads.append才能(grad_i),, #,梯度存储 #,定义一个空的字典用于存储,batchsize中所有梯度的和 grads_sum =, {},,,,, #,将网络中每个需要更新梯度的变量都遍历一遍,, for 小姐:范围(len (grads_holder)):拷贝, 时间=k 才能;grads_holder[我][0],#,得到该变量名 #,才能将该变量名下的所有梯度求和,这里也可以求平均,求平均只需要除以batchsize grads_sum才能[k],=,总和([g[我][0],for g 拷贝毕业生]), #,完成梯度更新 sess.run (optm feed_dict=grads_sum)
看完上述内容,你们掌握使用Tensorflow怎么实现梯度异步更新的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!