在 Tensorflow 中微调深度神经网络

Fine-tuning a deep neural network in Tensorflow

我想在 Tensorflow 中部分微调预训练的深度神经网络(例如,加载所有层的权重,但只更新更高层的权重)。

Tensorflow 中是否有任何方法允许选择应更改的变量和应保持不变的变量?

提前致谢!

当您创建优化器时(例如 tf.train.AdagradOptimizer) to train your model, you can pass an explicit var_list=[...] argument to the Optimizer.minimize() method. (If you don't specify this list, it will default to containing all of the variables in 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)