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



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

global_step_tensor = tf。变量(10, 可训练=假, 名称='global_step'(

SESS = TF。会话((

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

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

我阅读了可训练的文档,但不太明白。

所以我的问题是:

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

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

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

可训练变量

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

不可训练变量的典型示例是 global_step ,因为它的值确实会随时间变化(通常在每次训练迭代中为 +1(,但您不想对其应用优化算法。

最新更新