在TensorFlow中可以训练tf.variable是什么意思

Jek*_*ONG 5 python tensorflow

当我阅读global_step的文档时,这个问题出现了.这里明确声明global_step不可训练.

global_step_tensor = tf.Variable(10,trainable = False,name ='global_step')

sess = tf.Session()

print('global_step:%s'%tf.train.global_step(sess,global_step_tensor))

根据我的理解,可训练意味着可以在sess.run()期间更改值.我试图宣布它既可训练又不训练,并得到相同的结果.所以我不明白为什么我们需要声明它不可训练.

我阅读了可训练的文件,但并没有得到它.

所以我的问题是:

  1. 可以在sess.run()期间更改不可训练的变量值,反之亦然?
  2. 使变量无法训练的重点是什么?

GPh*_*ilo 13

根据我的理解,可训练意味着可以在sess.run()期间更改值

这不是可训练变量的定义.任何变量都可以在a期间修改sess.run()(这就是为什么它们是变量而不是常量).

可训练变量和不可训练变量之间的区别用于让我们Optimizer知道它们可以作用于哪些变量.定义a时tf.Variable(),设置trainable=True(默认值)会自动将变量添加到GraphKeys.TRAINABLE_VARIABLES集合中.在培训期间,优化程序通过tf.trainable_variables()并获取该集合的内容并将其应用于所有这些内容.

非训练变量的典型示例是global_step,因为其值随时间变化(通常在每次训练迭代时为+1),但您不希望对其应用优化算法.