当前位置:   article > 正文

TensorFlow 训练多个loss函数技巧: 训练步骤,冻结部分层(freeze some scopes),从tensorboard检查问题_多段loss 函数

多段loss 函数

这两天使用TensorFlow训练一个多个损失函数的网络模型,自己搭建网络,调参训练,由于网络是一个两阶段的网络,具有三个损失函数,其中两个损失函数监督第一个阶段,一个损失函数家督第二个阶段,而且损失函数监督的并不全是最后一层,还有中间层,这需要调整我的训练方式。

训练方式

  1. 先分别训练第一阶段的两个损失函数
  2. 固定住第一阶段的网络的参数,只训练第二阶段网络参数
  3. 调整三个loss函数的正则化参数,减小学习率同时训练三个loss函数进行精调

冻结部分层(固定低层参数)

第一步和最后一步都好说,假设定义好了三个loss函数分别为self.loss1,self.loss2,self.loss3和加入正则化后的整个网络的损失函数self.loss,那么第一步和第三步的实现实例为

 optimizer = tf.train.AdamOptimizer(self.lr, beta=0.9, beta=0.999, name='AdamOptimizer')
 update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
 with tf.control_denpendencies(update_ops):
     self.train_op = optimizer.minimize(self.loss)
  • 1
  • 2
  • 3
  • 4

这是我们常用的整个网络的参数都进行训练的方式,当需要固定低层的参数时,例如我有一个24层的网络,我需要固定1-14层,只更新15-24层,也就是上面的第二个步骤,则代码如下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/133249
推荐阅读
相关标签
  

闽ICP备14008679号