我想知道是否有一种方法可以为不同的层使用不同的学习率,就像Caffe中的那样.我正在尝试修改预先训练的模型并将其用于其他任务.我想要的是加快新增加的层的训练,并使训练好的层保持低学习率,以防止它们被扭曲.例如,我有一个5-conv层预训练模型.现在我添加一个新的转换层并对其进行微调.前5层的学习率为0.00001,最后一层的学习率为0.001.知道怎么做到这一点?
我正在创建一个Tensorflow模型,它预测多个输出(具有不同的激活).我认为有两种方法可以做到这一点:
方法1:创建多个损失函数(每个输出一个),合并它们(使用tf.reduce_mean或tf.reduce_sum)并将其传递给训练操作,如下所示:
final_loss = tf.reduce_mean(loss1 + loss2)
train_op = tf.train.AdamOptimizer().minimize(final_loss)
Run Code Online (Sandbox Code Playgroud)
方法2:创建多个训练操作,然后将它们分组如下:
train_op1 = tf.train.AdamOptimizer().minimize(loss1)
train_op2 = tf.train.AdamOptimizer().minimize(loss2)
final_train_op = tf.group(train_op1 train_op2)
Run Code Online (Sandbox Code Playgroud)
我的问题是一种方法是否优于另一种方法?还有第三种方法我不知道吗?
谢谢