基础语法
模型训练
- 【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’