Pytorch处理数据与训练网络问题汇总(协同训练)

基础语法

模型训练

  • 【Swin-Unet】官方代码预训练权重加载函数load_from()

实际上由于SwinUnet是一个encoder-decoder对称的结构,因此加载权重时,作者并没有像通常那样仅仅加载encoder部分而不加载decoder部分,而是同时将encoder的权重对称地加载到了decoder上(除了swin_unet.layers_up.1/2/3.upsample)

  • 预训练中的权重加载(完全导入,部分导入)

#demo1 完全加载权重
model = NET1()
state_dict = model.state_dict()
weights = torch.load(weights_path)[‘model_state_dict’] #读取预训练模型权重
model.load_state_dict(weights)
#部分导入

  • loss损失函数
  • 一致性损失(半监督学习):用原样本的输出概率分布和增强样本的输出概率分布的KL散度损失与有标签样本的交叉熵损失进行联合训练
  • consistency_weigh一致性损失t的权重随着训练周期逐渐增加,防止网络训练前期被无意义的一致性目标影响。

def get_current_consistency_weight(epoch):
# Consistency ramp-up from https://arxiv.org/abs/1610.02242
return args.consistency * ramps.sigmoid_rampup(epoch, args.consistency_rampup)

  • Epoch与Iteration的概念类似

parser.add_argument( ’ --max_iterations’, type=int,default=300,help='maximum iterations number to train ’ )
#default=30000 改变iteration改变epoch

常见报错

  • For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

os.environ[ " CUDA_VISIBLE_DEVICES" ]=‘4,5’
os.environ[ " CUDA_VISIBLE_DEVICES" ]=‘4,5’ …41

  • ModuleNotFoundError: No module named ‘networks.unet’

猜你喜欢

转载自blog.csdn.net/Magnolia_He/article/details/129344964
今日推荐