tensorflow设置不同层不同学习率

 1.先输出层的参数变量

variables_names = [v.name for v in tf.trainable_variables()]
values = sess.run(variables_names)
for k, v in zip(variables_names, values):
    print "Variable: ", k
    print "Shape: ", v.shape
    print v 2.比如要对前20层的参数使用较低的学习率微调(20层大概有40种参数,20个weight,20个bias),对后面新的层使用较大的学习率进行学习:   使用tf.trainable_variables()获取网络的变量
  var1 = tf.trainable_variables()[0:40]
  var2 = tf.trainable_variables()[40:]
  train_op1 = GradientDescentOptimizer(0.00001).minimize(loss, var_list=var1) 优化方法可以修改
  train_op2 = GradientDescentOptimizer(0.0001).minimize(loss, var_list=var2)
  train_op = tf.group(train_op1, train_op2)

3.利用预训练好的模型进行新模型的学习
 加载预训练好的模型参数去替换新网络对应的那部分参数即可,直接把新网络初始化的参数值替换。

1 Feedback on “tensorflow设置不同层不同学习率”

发表评论

电子邮件地址不会被公开。 必填项已用*标注