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个bia),对后面新的层使用较大的学习率进行学习:
使用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.利用预训练好的模型进行新模型的学习
加载预训练好的模型参数去替换新网络对应的那部分参数即可,直接把新网络初始化的参数值替换。