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.利用預訓練好的模型進行新模型的學習
加載預訓練好的模型參數去替換新網絡對應的那部分參數即可,直接把新網絡初始化的參數值替換。