04/06
1、monai导入时显示没有ImageDataset类
from monai import ImageDataset
问题:之前还可以正常使用,在重装了monai之后开始报错,本以为是之前删除的时候没有删除干净导致包已经坏掉了,后来发现原因是使用了镜像源,而镜像源中对于这些不是很大众的包更新不及时。就monai这个包来说,最新的是0.8,而镜像源中只有0.4,那时还没有ImageDataset这个类,所以报错。
解决方法:通过conda config --remove channnels
删除镜像下载源,使用默认的下载源下载最新的monai。
2、指定GPU运行训练程序显示内存已满
os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu
RuntimeError: CUDA out of memory. Tried to allocate 158.00 MiB (GPU 0; 11.17 GiB total capacity; 556.72 MiB already allocated; 26.06 MiB free; 17.28 MiB cached)
问题:运行时使用参数指定gpu,选择了空闲的gpu6,但减小了Batch size后发现始终跑在gpu0上。原因是pytorch在初始化的时候会默认在第0块显卡上进行,会占用一定的显存,这就导致,在第0块显卡空闲内存不多时,程序会反复报上面的错误。
解决方法:
if __name__ == '__main__':
with torch.cuda.device(6):
main()
参考链接:
https://blog.csdn.net/qq_35037684/article/details/106649307
3、matplotlib在服务器上无法显示图片
问题:由于服务器是没有显示器的Linux操作系统,所以无法像本地调试时一样打开一个窗口显示图片。
解决方法:我的训练中画的是混淆矩阵,直接使用plt.savefig()
保存下来即可。
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=[0,1])
disp.plot(cmap="GnBu")
plt.savefig("./confusion_matrix.jpg", dpi=200)
另外附上plot()函数的一个可选参数cmap,即colormap,可以在官方文档中选择合适的颜色。