# tensorflow中从ckpt文件中恢复指定的层或将指定的层不进行恢复: # tensorflow中不同的层指定不同的学习率 用tf.Graph () .as_default (): #存放的是需要恢复的层参数 variables_to_restore=[] #存放的是需要训练的层参数名,这里是没恢复的需要进行重新训练,实际上恢复了的参数也可以训练 variables_to_train=[] 在slim.get_model_variables var (): 排除=False 为排除fine_tune_layers: #比如微调层中包含分对数,瓶颈 如果var.op.name.startswith(排斥): 排除=True 打破 如果不排除: variables_to_restore.append (var) #打印(恢复:var, var) 其他: variables_to_train.append (var) #打印(var:培训,var) #这里省略掉一些步骤,进入训练步骤: #将variables_to_train,需要训练的参数给优化器的compute_gradients函数 毕业生=opt.compute_gradients (total_loss variables_to_train) #这个函数将只计算variables_to_train中的梯度 #然后将梯度进行应用: global_step=global_step apply_gradient_op=opt.apply_gradients(毕业生) #也可以直接调用opt.minimize (total_loss variables_to_train) #最小化只是将compute_gradients与apply_gradients封装成了一个函数,实际上还是调用的这两个函数 #如果在梯度里面不同的参数需要不同的学习率,那么可以: capped_grads_and_vars=[] # [(MyCapper(问[0]),问[1])的全球之声grads_and_vars] # update_gradient_vars是需要更新的参数,使用的是全局学习率 #对于不是update_gradient_vars的参数,将其梯度更新乘0.0001以使用基本上不动 研究生的毕业生: 在update_gradient_vars update_vars: 如果毕业生[1]==update_vars: capped_grads_and_vars.append(研究生[0],毕业生[1])) 其他: capped_grads_and_vars.append((0.0001 *研究生[0],毕业生[1])) apply_gradient_op=opt.apply_gradients (capped_grads_and_vars global_step=global_step) #在恢复模型时: 与sess.as_default (): 如果pretrained_model: 打印('恢复pretrained模型:% s ' % pretrained_model) init_fn=slim.assign_from_checkpoint_fn ( pretrained_model, variables_to_restore) init_fn(税) #这样就将指定的层参数没有恢复 >之前以上这篇tensorflow恢复指定层与不同层指定不同学习率的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
tensorflow恢复指定层与不同层指定不同学习率的方法