我想在Tensorflow中对预训练的深度神经网络进行部分微调(例如,为所有层加载权重,但只更新更高层次的权重).
Tensorflow中是否有任何方法可以选择应该更改的变量和应该保持相同的变量?
先感谢您!
解决方法:
在创建优化程序(例如tf.train.AdagradOptimizer
)以训练模型时,可以将显式var_list = […]参数传递给Optimizer.minimize()
方法. (如果未指定此列表,则默认包含tf.trainable_variables()
中的所有变量.)
例如,根据您的模型,您可以使用变量的名称来定义要优化的变量列表:
# Assuming all variables to be fine-tuned have a name that starts with
# "layer17/".
opt_vars = [v for v in tf.trainable_variables() if v.name.startswith("layer17/")]
train_op = optimizer.minimize(loss, var_list=opt_vars)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。