在Linux服务器上跑Python Unet程序

写于1.4日中午 在学校

我以后再也再也不拖延了。

一、遇到Out of memory的问题

解决办法:

1、把图片Resize一下。

2、把batch size改小一点。

先尝试解决办法2:

我先尝试第二种办法:batch size 原来是25,我把batch size改成2试试看。

果然可以顺利跑起来了!好开心啊~

我还是不希望resize图片,那么久吧

关于batch size和训练结果的关系,查看这一个网页:

https://www.zhihu.com/question/32673260

判断学习率设置是否良好:

在Linux服务器上跑Python Unet程序_第1张图片

其次,准确率

二、Pytorch如何保存训练好的模型

参考网址:https://blog.csdn.net/VictoriaW/article/details/72840878

在Linux服务器上跑Python Unet程序_第2张图片

我发现在代码的训练部分,有这样一段保存训练结果的代码:

在Linux服务器上跑Python Unet程序_第3张图片

这个函数的具体定义在代码下的save_checkpoint.py代码内。

意思是把state of  a net保存在checkpoint文件夹下的weights0.pth文件中。


我现在需要用的是第一种方法。

目前我已经在checkpoints文件夹下的checkpoints文件夹下保存了weights0.pth

我现在需要导入.pth文件夹。

(其实这个不需要服务器,这个在自己家里的电脑上都能跑出来。)

在test的代码里,有这样一段代码:

torch.load后面这两个参数分别表示什么意思呢?


在Linux服务器上跑Python Unet程序_第4张图片

所以我想到的解决办法是:把“weights0.pth”文件放到和result一样的文件夹下面,然后把load_weights的默认值改成“weights0.pth”,再跑。


我现在已经对原来的程序作出的改动有:

1、main里面的batchsize被我改成了从25到2

2、所有的png都被我改成了tif

3、result_visualization.py里的load_weights的默认值被我改成了“weights0.pth

4、result_visualization.py里的测试集的位置被我改变了。

三、跑test的代码

我把weights移动到对应的文件夹了。

遇到的问题1:

代码里“import matplotlib.pyplot as plt”这一句话报错。

解决办法1:

参考网站:https://stackoverflow.com/questions/49013901/importerror-cannot-import-name-path-matplotlib

就是卸载再重装

卸载重装后重启试试看。

成功解决,所以不需要看办法二了。

解决办法2:

https://blog.csdn.net/Nebula_W/article/details/79541287

这个办法可能更靠谱一点:

原因:Package中path.py的版本过高造成的。

解决方法:更改path.py的版本在7.6.1左右即可。

遇到的问题2:

代码里“import pandas as pd”这一句话报错。

参考网站:

https://stackoverflow.com/questions/30761152/how-to-solve-import-error-for-pandas

解决办法:

卸载,重装,再重启Spyder

解决!

遇到问题3:

我暂时注释掉了这两句:

在Linux服务器上跑Python Unet程序_第5张图片

遇到问题4:

类似统一原图和groundtruth图的名字的问题

用rename改一下名字就好了。

祈祷再不要报错了。

好像在跑了。

真的没有报错了。

报错是没有足够内存!

所以程序应该是对的了。

遇到问题5:

train的程序跑到第29个epoch的61%的时候忽然跑不动了。

那我就先不跑啦,先去用服务器跑test的程序。

遇到问题6:无法导入Pytorch

快速退出python模式的方法:Ctrl+z

我试过了,如果直接输入python,再输入import torch,还是不行。

解决办法1:重装Pytorch

上面显示你已经装过了pytorch

解决办法2:卸载再重装Pytorch

卸载的时候上面写:


然后我直接输入了pip install torch,居然开始安装了,之后就导入成功了。

遇到问题7:

还是CUDA OUT of memery的问题

问了学姐,学姐说解决办法是:一个图一个图地放进去跑,不要很多图一起放进去跑。

我放了一个图进去,立刻就跑好了。

遇到问题8:

跑是跑好了,但是图去哪里了呢?

我把default那里的./改成了prediction,希望能创建这么一个文件夹。

但是还是跑完了没有图。真的很奇怪。我去查源代码吧。

图就在visualization文件夹下面呀!稍微等一下就出来了。等大概1分钟。

我是在WinSCP里面看的。

四、回顾Train的代码

遇到的问题是:loss的值是负的。

我用的计算loss的方法是Dice Loss function.。

我需要先去查这个function。

Dice coefficient是常见的评价分割效果的方法之一,同样的也可以作为损失函数衡量分割的结果和标签之间的差距。

在这个class中,dice_coef函数的return是loss的结果

在Linux服务器上跑Python Unet程序_第6张图片
rna

这里有一个相关的函数定义的式子:

https://blog.csdn.net/a362682954/article/details/81226427

你可能感兴趣的:(在Linux服务器上跑Python Unet程序)