tensorflow 填坑笔记(持续更新~)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014665013/article/details/86988744

文章目录

global_step全局step

global_step在滑动平均、优化器、指数衰减学习率等方面都有用到,这个变量的实际意义非常好理解:代表全局步数,比如在多少步该进行什么操作,现在神经网络训练到多少轮等等,类似于一个钟表。
global_step经常在滑动平均,学习速率变化的时候需要用到,这个参数在tf.train.GradientDescentOptimizer(learning_rate).minimize(loss, global_step=global_steps)里面有,系统会自动更新这个参数的值,从1开始。

这里要注意的是,在通过global_step=tf.Variable(0, trainable=False)定义的时候,一定要定义成global_steps = tf.Variable(10,trainable=False,name = "global_step")的形式,也就是指定name="global_step",要不然:

  • 在通过tf.train.get_global_step()获取global_step的时候回报错,因为这个函数默认的是从查找name=global_step的变量的。该函数的官方注释是这么说的:

    The global step tensor must be an integer variable. We first try to find it in the collection GLOBAL_STEP, or by name global_step:0.

  • 在重新加载图的时候,因为没有制定的name,所以再重新加载训练的时候会因为指数衰减等使用了global_step的地方出现错误,因为重新加载的时候找不到这个变量,会再次初始化,导致重新训练的时候出现环境不一致,进而训练失败。

测试示例:

import tensorflow as tf
sess = tf.InteractiveSession()
global_steps = tf.Variable(10,trainable=False,name = "global_step")

sess.run(tf.global_variables_initializer())
print(sess.run(tf.train.get_global_step()))

注意:fine-tuning时,global_step肯定要从0开始记;继续训练时要从上次的断点开始计。

更多关于global_step的save和restore详见:点我打开

参考链接:

猜你喜欢

转载自blog.csdn.net/u014665013/article/details/86988744