最近在搞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这个函数里面,不需要更新的不放进去。
GitHub 加速计划 / te / tensorflow
184.55 K
74.12 K
下载
一个面向所有人的开源机器学习框架
最近提交(Master分支:2 个月前 )
a49e66f2 PiperOrigin-RevId: 663726708 2 个月前
91dac11a This test overrides disabled_backends, dropping the default value in the process. PiperOrigin-RevId: 663711155 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐