1. 程式人生 > >tensorflow凍結層的方法

tensorflow凍結層的方法

最近在搞faster-rcnn的改動,網上看到很多人在做的一些改進,其中就包括凍結Bn等等方式,於是自己也就查了一下tensorflow裡面凍結層的方法,現在總結如下:

1、比如使用一個VGG的前面提取特徵的部分,而微調其全連層,或者將其全連層更換為使用convolution來完成,可以使用TensorFlow的stop_gradient函式,將模型的一部分進行凍結。

2、採用get_collection:

  1. #定義優化運算元
  2. optimizer = tf.train.AdamOptimizer( 1e-3
    )
  3. #選擇待優化的引數
  4. output_vars = tf.get_collection(tf.GraphKyes.TRAINABLE_VARIABLES, scope= 'outpt')
  5. train_step = optimizer.minimize(loss_score,var_list = output_vars)
把需要更新梯度的層放在get_collection這個函式裡面,不需要更新的不放進去。