python 数据结构转换层_python - 如何在Tensorflow中按层(Layer)设置学习率?

是否可以对Tensorflow的不同层使用不同的学习率?

我正在尝试修改预训练模型并将其用于其他任务。我想要的是加快对新添加的层的训练,并使受过训练的层保持较低的学习率,以防止它们变形。例如,我有一个5个卷积层的预训练模型,然后,我添加了一个新的转换层并对其进行微调。前5层的学习率为0.00001,后5层的学习率为0.001。如何实现这一目标?

相似问题:

Tensorflow按网络分层设置学习速率(learning rate)。

Tensorflow给每一层分别设置学习速率。

方案1:

使用2个优化器可以很容易地实现它:

var_list1 = [variables from first 5 layers]

var_list2 = [the rest of variables]

train_op1 = GradientDescentOptimizer(0.00001).minimize(loss, var_list=var_list1)

train_op2 = GradientDescentOptimizer(0.0001).minimize(loss, var_list=var_list2)

train_op = tf.group(train_op1, train_op2)

此实现的一个缺点是,它在优化器内部两次计算tf.gradients(。),因此就执行速度而言可能不是最佳的。可以通过显式调用tf.gradients(.),将列表分成2个并将相应的梯度传递给两个优化器来缓解这种情况。

改进版:添加了更有效但也有更多代码的实现:

var_list1 = [var

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值