2021
07-17
07-17
pytorch固定BN层参数的操作
背景:基于PyTorch的模型,想固定主分支参数,只训练子分支,结果发现在不同epoch相同的测试数据经过主分支输出的结果不同。原因:未固定主分支BN层中的running_mean和running_var。解决方法:将需要固定的BN层状态设置为eval。问题示例:环境:torch:1.7.0#-*-coding:utf-8-*-importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassNet(nn.Module):def__init__(self):super(Net,self).__init...
继续阅读 >
加载模型字典逐一判断每一层,如果该层是bn的runningmean,就取出参数并取平均作为该层的代表对保存的每个BN层的数值进行曲线可视化fromfunctoolsimportpartialimportpickleimporttorchimportmatplotlib.pyplotaspltpth_path='checkpoint.pth'pickle.load=partial(pickle.load,encoding="latin1")pickle.Unpickler=partial(pickle.Unpickler,encoding="latin1")pretrained_dict=torch.load(pth_path,map_loc...