说明:pytorch(1-3),TensorFlow(4)
fine tune就是冻结网络前面的层,然后训练最后一层
requires_grad置为False: - optimizer = optim.SGD(model.parameters(), lr=1e-2) # 传入的是所有的参数
-
- for name, param in model.named_parameters():
- if 要冻结的网络层的名字(即name的值):
- param.requires_grad = False
optimizer = optim.SGD(model.不冻结的网络层的name.parameters(), lr=1e-2) # 优化器只传入fc2的参数 节省显存:不将不更新的参数传入optimizer
提升速度:将不更新的参数的requires_grad设置为False,节省了计算这部分参数梯度的时间
- #定义优化算子
- 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)