在TensorFlow中,是否可以对网络的不同部分使用不同的学习率?

Yin*_*ong 5 deep-learning tensorflow

我想到的用例是在经过预先训练的网络中添加更多层,我想调整整个网络。但是,我希望新添加的层比现有的层具有更高的学习率。在TensorFlow中可以这样做吗?

Ste*_*ven 2

您可以使用此处提到的类似方法

基本上围绕您想要使用单独的学习率进行训练的网络的每个部分设置不同的 var 范围,然后:

optimizer1 = tf.train.AdagradOptimzer(0.0001)
optimizer2 = tf.train.AdagradOptimzer(0.01)

first_train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                 "scope/prefix/for/first/vars")
first_train_op = optimizer1.minimize(cost, var_list=first_train_vars)

second_train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                  "scope/prefix/for/second/vars")                     
second_train_op = optimizer2.minimize(cost, var_list=second_train_vars)
Run Code Online (Sandbox Code Playgroud)