动态设置张量流变量的训练能力

时间:2017-03-13 06:39:45

标签: python machine-learning tensorflow neural-network deep-learning

我有一个包含多个变量的多个范围的网络。我需要一种方法来设置特定变量或名称范围的训练能力,使得它们不会更新并且不包括在渐变计算中,然后在某些条件之后将它们设置为可训练的。它甚至可能吗?如果是,怎么样?

with tf.name_scope('layer1'):
     w = tf.Variable(...)
     b = tf.Variable(...)
     ... some function ...
with tf.name_scope('layer2'):
     w = tf.Variable(...)
     b = tf.Variable(...)
     ... some function ...
with tf.name_scope('layer3'):
     w = tf.Variable(...)
     b = tf.Variable(...)
     ... some function ...

我想在第一个范围内更改变量的训练能力,因为它们是从预先训练的文件中恢复的,并且它们已经被学习。因此,我想在其他层中训练变量,直到它们被学习,然后将第一个范围中变量的训练能力设置回True并将它们训练在一起。

1 个答案:

答案 0 :(得分:2)

您可以使用的一件事是每个优化器都有的var_list参数:https://docs.angularjs.org/api/ng/type/

文档说:

  

var_list:要更新的可变对象的可选列表,以最大限度地减少损失。默认为关键字GraphKeys.TRAINABLE_VARIABLES下图表中收集的变量列表。

在你的情况下你可以说:

optimizer = GradientDescentOptimizer(0.01)
optimizer.minimize(loss,[w1,w2])

如果有帮助,请告诉我们!