在使用pytorch训练保存checkpoint时,出现如下报错:
root@autodl-container-745411b452-c5cebfed:~/kvasir-seg-main# python train_transunet.py --loss_function="IoULoss" --training_augmentation=0File "train_transunet.py", line 306torch.save(state, f'checkpoints/{SETTINGS["model_name"]}_{'headnum6'}.pth')^
SyntaxError: invalid syntax
报错的代码是这句这一句原本代码如下:
torch.save(state, f'checkpoints/{SETTINGS["model_name"]}.pth')
因为我修改了一个超参数head_num,希望把这个超参数加入到checkpoint名称里,以区分每次训练保存的结果。于是增加了_{'headnum6'}。
出错的原因,是 f-string 本身也是用单引号包围的,而我又在单引号内部又用了一次但引导,导致f-string产生了混淆,无法正确解析。
所以只要把单引号替换成双引号就可以了
torch.save(state, f'checkpoints/{SETTINGS["model_name"]}_{"headnum6"}.pth')