项目场景:
最近在用UNETR做医学图像的分割,下载好源代码和作者数据后,在终端输入命令行准备训练时报错
问题描述
原代码没变,在终端命令行如下
python main.py --feature_size 32 --batch_size 1 --logdir unetr_test --optim_lr 1e-4 --lrschedule warmup_cosine --infer_overlap 0.5 --save_checkpoint --data_dir "/data/MAE/research-contributions-main/UNETR/BTCV/dataset/dataset0/" --distributed
报错:
RuntimeError: Pin memory thread exited unexpectedly
原因分析:
当计算机的内存充足的时候,可以设置pin_memory=True。当系统卡住,或者交换内存使用过多的时候,设置pin_memory=False
参考:torch之DataLoader参数pin_memory解析
解决方案:
例如:找到 data.DataLoader
函数,把参数 pin_memory=True
改成pin_memory=False
,注意测试集的、训练集的还有验证集的DataLoader都要改