动态设置Tensorflow变量的可训练性

我有一个包含多个作用域的网络,这些作用域内有多个变量。我需要一种方法来设置特定变量或名称作用域的可训练性,使它们不被更新且不包括在梯度计算中,然后在满足某些条件后再将它们设置为可训练。这是否可行?如果可以,如何操作?

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,并一起训练它们。


回答:

你可以使用每个优化器都有的var_list参数:https://www.tensorflow.org/api_docs/python/tf/train/Optimizer

文档中说明:

var_list: 可选的变量对象列表,用于最小化损失。默认情况下,使用图形中收集在GraphKeys.TRAINABLE_VARIABLES键下的变量列表。

在你的情况下,你可以这样说:

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

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注