python - 动态设置tensorflow变量的可训练性

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

最佳答案

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

文档说:

var_list: Optional list of Variable objects to update to minimize loss. Defaults to the list of variables collected in the graph under the key GraphKeys.TRAINABLE_VARIABLES.

根据你的情况,你可以说:

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

请告诉我们这是否有帮助!

关于python - 动态设置tensorflow变量的可训练性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757805/

相关文章:

python-2.7 - 我正在尝试根据肝脏疾病数据集构建随机森林分类器。但 fit 方法返回错误,例如 :

python - 创建模型时使用 theano 作为后端 from Keras.layers.core import Dense

machine-learning - MapR 是否具有可扩展的机器学习算法。像马胡特一样?

c++ - tensorflow 无效参数: In[0] is not a matrix

Python 振幅谱图

python - 将字典键/值对的单引号转换为双引号

machine-learning - Keras:为什么观察到的批量大小与指定的批量大小不匹配?

python-3.x - Keras 中的 MNIST 和 VGG16 迁移学习 - 验证精度低

Ubuntu 16.04 LTS 中的 Python 给出错误/lib/x86_64-linux-gnu/libc.so.6 版本 `GLIBC_2.25' 未找到

python - 框架上的 Canvas 未显示