美文网首页
2019-02-25(visdom可视化,downgrade p

2019-02-25(visdom可视化,downgrade p

作者: 幽并游侠儿_1425 | 来源:发表于2019-02-26 11:01 被阅读38次

晚上睡前一定要注册好QE,注册完写在这一句的后面。

一、color the grountruth

虽然anaconda安装不好,但是我直接把代码放在linux上面跑,没有报错需要安装包之类的。

cc2的给groundtruth上色的代码在119和131行报错了。报错原因均是和二维转化成三维相关的。我直接把第三维删掉了,这样三维数组就变成了二维的了。

跑代码的时候注意事项记录如下:

(1)crop这个文件夹存储png格式的原图,注意命名:z0001,z0002之类的;

(2)添加颜色的txt文件放在主文件夹下;

(3)然后结果是tif格式的文件,存储在color_coded_out文件夹内;

(4)运行函数CC2(x,y,z)这里的x,y,z分别填图像的维度。比如我是1024*1024*1.

(5)我其实是一张一张跑的,比如放z00001,然后出一张结果;再覆盖掉,换成新的z0001,再出一张结果。

顺利完成(yeah~)

其实睡饱了还是很重要的,感觉比周六调试了一整天的效率都高。

二、把python downgrade 到3.6版本

参考网站:

http://chris35wills.github.io/conda_python_version/  

步骤记录如下:

1、在terminal的命令行里输入: conda search python

查看目前服务器里已经安装了的python版本;

2、比如我要安装python 3.6.7,我需要在服务器里输入:

conda install python=3.6.7

中间要回来点一下yes or no的yes.

然后python就变成了3.6.7的版本了。

三、跑xxcyclegan的代码

带nohup的命令行如下:

CUDA_VISIBLE_DEVICES=0 nohup python train.py --dataroot ./datasets/cell3 --name cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8889 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out &

我先跑不带nohup的命令行:

CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8889 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out

我感觉要安装一些包。你看缺啥包,就安装啥包吧。

然后注意数据的多样性,之前放的数据其实可能不大行的。

遇到问题1:缺dominate包

pip install dominate

遇到问题2:CUDA driver version is insufficient for CUDA runtime version

所以还是需要把包放到学长跑代码的服务器下面去跑。

我先在学长的服务器上安装anaconda,然后再找着上面的方法downgrade。

这个服务器是蓝色的服务器。

参考自己之前的文章:(1-3)Windows系统连接Linux远程服务器并把Python程序传到远程服务器上运行

继续在新的服务器上跑命令行:

CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8889 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out

发现pytorch也没有在新的机器上安装。

依旧是参考1月3号的方法:conda install pytorch torchvision -c pytorch

遇到问题3:

报错如下: <urllib3.connection.HTTPConnection object at 0x7fa44ca31c50>: Failed to establish a new connection: [Errno 111] Connection refused

有人遇到过类似的问题的。

询问学长之后,记录如下:

(1)因为我的命令行的原因,所以日志文件是存在bioscpy.out里的,即使没有nohup,在terminal显示的也不是原始文件。

(2)学长能在服务器上直接编辑python文件,我都是在外面编辑好,然后通过winscp扔进来。学习学长的这种方法

(3)学长看到了这一行:ERROR:visdom:[Errno 111] Connection refused

所以他让我查visdom的相关内容,问题就会变得很好解决了。

(4)这个命令行里有display的内容,需要在文件夹里建立public_html,这样才可能在外部display.

参考网站:

https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/issues/24

当我输入:

python -m visdom.server

屏幕上跳出来:

Checking for scripts.

It's Alive!

INFO:root:Application Started

You can navigate to http://localhost:8097

跳出来这一段的时候我可激动了

所以这里我也要把端口号改掉咯~~

CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8097 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/biospy.out

然后我需要查visdom的内容,visdom是pytorch的可视化神器,类似tensorflow的tensorboard那样。

具体介绍参考这里:

https://zhuanlan.zhihu.com/p/32025746

遇到问题4:我输入visdom的启动命令行之后,就卡在那里了。

此外,端口号是在linux上面,肯定不能在window上打开去看。那么如何打开那个可视化页面呢?

刚刚问了hans,需要查的内容是:ssh visdom

其次需要查screen代码。他说需要再开一个窗口,才能输入新的命令行。

解决办法4-1:

远程连接visdom的问题

参考连接:https://blog.csdn.net/RhineYu/article/details/79947745

描述:“在服务器上开启jupyter notebook,或者TensorBoard,或者visdom服务时,会给出一个IP地址和端口号,可以在浏览器中运行。但是我在本地浏览器中输入这个地址并不能连接服务。”

“通过Google及Stack Overflow,找到解决方案,原因在于本地访问服务器应用需要建立SSH通道,SSH端口转发需要SSH连接,而SSH连接是有方向的,从SSH Client到SSH Server。而我们所要访问的应用也是有方向的,应用连接的方向也是从应用的Client端连接到应用的Server端。比如我们要访问服务器上的Web站点时,HTTP应用的方向就是我们这台主机(Client)到服务器(Server)。

我们这个问题中,开启jupyter notebook,TensorBoard,或是visdom,都属于本地转发(Local Forward),即SSH连接和应用的连接这两个连接的方向一致。具体解决方法是在本地终端建立SSH通道”

vis = visdom.Visdom(env='model_1')

截图里的代码不对的,少了一个d。

输入前三行代码之后报错:“address already in use”

原因是hans帮我放到后台跑的吧。我查一下后台的程序。

查看后台运行进程的代码是:jobs -l,但是后台没有正在跑的进程呀。

我现在在自己的电脑上输入127.0.0.1:8097,出现了visdom的界面了。(开心)

解决办法4-2

screen这个命令具体理解:

参考网址:http://www.runoob.com/linux/linux-comm-screen.html

另一个参考网址:https://www.ibm.com/developerworks/cn/linux/l-cn-screen/index.html

我觉得第二个网址更加详细。

总体操作方法:

1、输入 ssh -L 端口名称  登录的用户名

2、其实我发现直接可以在浏览器中打开这个端口了,可能这个原因,当我输入:

python3 -m visdom.server的时候,才会报错:“address already in use”

地址被占用的解决办法:

参考网址:https://gauravsohoni.wordpress.com/2015/09/17/address-already-in-use-errors-find-and-kill-process/

先在命令行中输入:lsof -i tcp:8097,其中8097是端口号。

This should list pids for applications using port 3000. Once you have the pid you can kill the process with kill command

用以下命令结束这个pid:

kill -9 <PID> #where <PID> is the process id returned by lsof

这时候再输入:lsof -i tcp:8097,就没有内容返回了。同时网页也打不开了。

这时候再输入:python3 -m visdom.server,就没有报错:端口被占用了。

3、对sreen的尝试:

先输入screen,再activate可视化窗口,再sreen回去(ctrl+a+d)

这个方法可以!

在screen回去的界面运行命令行,没有报错visdom相关的错误了。

遇到问题5:

报错IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number

解决办法:https://github.com/NVIDIA/flownet2-pytorch/issues/113

至少不是代码内部的错误,是版本的错误,所以我需要自己改代码的版本。

我先把旧版本back up一下,取名为。。。。——backup,然后再改新的代码。

解决办法:

That's because in PyTorch>=0.5, the index of 0-dim tensor is invalid. The master branch is designed for PyTorch 0.4.1, `loss_val.data[0]` works well.

Try to change

total_loss += loss_val.data[0]

loss_values = [v.data[0] for v in losses]

to

total_loss += loss_val.data

loss_values = [v.data for v in losses]

might fix the problem.

需要改的代码位于:cycle_lo_seg_model.py的self.backward_G()这个函数里。

我删掉了代码第150行和151行的【0】,也删掉了194~199行的【0】

也删掉了代码126和131行的【0】

解决了这个报错。

遇到问题6:报错:TypeError: Object of type 'Tensor' is not JSON serializable

还是pythorch版本的问题:

https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/issues/258

这里建议是安装版本pytorch0.3.1

参考这篇文章:所以我需要安装pytoch0.3.0,并且把问题5改过来的地方改回去。就是还是用back up的代码跑。

尝试解决办法:

卸载掉当前的pytorch,然后安装0.3.0版本的pytorch

参考网址:https://ptorch.com/news/37.html

这篇文章讲的很详细,怎么卸载,怎么安装特定版本的pytorch,怎么查看当前pytorch版本。都写得很详细。

具体做法:

1、输入 pip uninstall torch 

然后这时候python,再输入 import torch,就显示:找不到模块了。

这样说明卸载成功

2、尝试这个命令行:pip install pytorch==0.3.10

但是安装失败。

我谷歌如下关键词:“downgrade pytorch to 0.3”

有不少人问一样的问题呢,哈哈

我在这个网站上找到了合适的解决办法:https://discuss.pytorch.org/t/how-to-switch-to-older-version-of-pytorch/19656

命令行如下:conda install -c pytorch pytorch=0.3.1

用conda而不是用pip安装

趁它在安装的时候,我把遇到问题5改过的代码改回去(就是把原来的程序丢进来。)

其实它安装的时候我心惊胆战的,生怕什么时候又报错了。

应该不会的,反正万一报错了,实验室里也有人可以问。

安装成功。

3、测试pytorch版本

输入代码如下:

成功解决。

然后我继续跑代码吧。

遇到问题7:找不到no-blocking这个参数

哦哦这时候同步异步那里要改回来了。就是2月18号改的那些地方要改回来

就改第85和86行就可以了,在notepad上改完丢进服务器。

好像可以顺利跑起来了。在log_file文件夹里,从最下面可以看到,日志的行数是不断增加的,说明跑起来了。

终于开始跑了

呜呜呜好激动,过了这么多天,终于跑起来了。

摘自log_file:

(epoch: 2, iters: 72, time: 0.800) D_A: 0.139 G_A: 0.280 Cyc_A: 0.253 D_B: 0.294 G_B: 0.348 Cyc_B: 0.862 location: 0.137 total: 1.880

End of epoch 2 / 200 Time Taken: 77 sec

learning rate = 0.0002000

总结:

1、用到的命令行如下:

CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/cell3 --name cell3_spcyclegan --model cycle_lo_seg --no_dropout --which_model_netG resnet_9blocks --display_id 2 --display_port 8097 --input_nc 1 --output_nc 1 --phase train --identity 0 >log_file/cell3.out

2、版本:

python3.6.7

pytorch 0.3.1(通过conda安装)

这个事例深刻地显示了运行环境的重要性!

四、改数据集,增加数据集的多样性

先观察自己的数据集差在哪里,然后找解决办法。

1是照片不够多;

2是照片几乎来自同几张图片。

我需要做的事情是:回到数据扩增部分,拿编号1-13张原图进行数据扩增,然后拿编号14-15张原图进行测试。

放256张图吧。如果不够我再增加图。我感觉像原来那样放128张图应该是不够的。

这时候学校的网络不行了。

我直接开始画groundtruth吧

五、画10张individual图的groundtruth

中午遇到的问题是:注意这里的overall  label capacity,最好调成50,如果调得更低一点,label的颜色就显示不出来了。

相关文章

网友评论

      本文标题:2019-02-25(visdom可视化,downgrade p

      本文链接:https://www.haomeiwen.com/subject/hhznyqtx.html