最近在搞faster-rcnn的改动,网上看到很多人在做的一些改进,其中就包括冻结Bn等等方式,于是自己也就查了一下tensorflow里面冻结层的方法,现在总结如下:
1、比如使用一个VGG的前面提取特征的部分,而微调其全连层,或者将其全连层更换为使用convolution来完成,可以使用TensorFlow的stop_gradient函数,将模型的一部分进行冻结。
2、采用get_collection:
-
#定义优化算子
-
optimizer = tf.train.AdamOptimizer( 1e-3)
-
#选择待优化的参数
-
output_vars = tf.get_collection(tf.GraphKyes.TRAINABLE_VARIABLES, scope= 'outpt')
-
train_step = optimizer.minimize(loss_score,var_list = output_vars)