本文主要记载一些遇到的坑和一些自己误解的概念性问题,通过对FusionGAN复现来熟悉矩池云。
本地环境:pycharm专业版23.2(只有专业版可以用ssh,社区版不可以,专业版要付费可以上桃找破解,学生可以申请免费专业版)
创建自己的账号,关注矩池云微信公众号,可以获得5个算力豆,初学者可以用这个来熟悉操作。矩池云大部分是Ubuntu系统下的环境,少数是windows。标记有windows图标下才有windows操作系统(上方有公测中的字样)。
点击租用即可进行使用,在下单前需要先选择系统镜像,系统镜像的选择 与 你自己代码需要的环境相关,和你本地安装环境无关(与操作系统无关)。
比如FunsionGAN基于tensorflow的框架进行编写的程序,那么我就需要预装带有tensorflow的环境,之前参考别的博主中提到太小的内存会报错,所以我直接选用了较大内存的显卡。
第一次下单的朋友还没有创建过环境,需要在系统镜像下选择相关环境。
在释放机器前,我们可以选择保存环境,这样下次使用时,我们可以选择我的环境,选择自己配置好的环境。
在下单前,我们需要先上传代码到矩池云网盘,选择-工作空间-我的网盘。矩池云提供了5G的免费网盘空间,在这里我们可以预存代码和数据集,在调试代码时,网盘访问路径在 /mnt 下,通过cd指令可以查看我们上传到网盘的所有文件。在这里我们选择上传,将本地代码上传到网盘。(当然,你也可以通过git指令下载,但是这样有点浪费时间,time=money)
FusionGAN下载地址:FunsionGAN代码下载地址(下载代码到本地再上传网盘)
在开始前,先将代码备份,删除数据集,只留下源代码(节省上传的同步时间)(这一步也可以不用,后面发现这个步骤相比于其他问题不算太浪费时间)
在pycharm中打开该文件:
选择需要的GPU开始租用,等待从启动中变为运行,如果一直没出来刷新一下页面:
选择project-python interpreter 右边选add interpreter
选择 On SSH
将矩池云中的主机、端口、用户名依次对应填入,再将密码填入
首先选择Virtualenv environment,点location旁边的文件图标,将地址改成
/root/miniconda3/envs/myconda/bin/python
/root/miniconda3/envs/myconda/bin/python
/mnt/.../FunsionGAN-mater
#中间是解压后自己命名的文档
再进入system interpreter,将 interpreter 和s ync folders改成和上面一样的路径,修改好后点击create
点击ok
创建好后可以看到右下角解释器变成了服务器下的地址,接着pycharm会上传 本地文件夹下文档到 服务器的文件夹下,点击左边传输可以查看上传情况(在左下角,双箭头)。
从上传记录可以看出,连接SSH后可以自动将本地文件下的代码同步到远程服务器中,实现本地修改代码远程调试的功能,有时候如果没有及时同步,选择tool-deployment-upload to,手动同步代码。
[2023/9/5 20:31] Upload to root@hz-t3.matpool.com:26634 password
[2023/9/5 20:31] Upload file 'C:\Users\Lenovo\Desktop\看过的文章\code\FusionGAN\FusionGAN-master\LICENSE' to '/mnt/LICENSE'
[2023/9/5 20:31] Upload file 'C:\Users\Lenovo\Desktop\看过的文章\code\FusionGAN\FusionGAN-master\main.py' to '/mnt/main.py'
[2023/9/5 20:31] Upload file 'C:\Users\Lenovo\Desktop\看过的文章\code\FusionGAN\FusionGAN-master\model.py' to '/mnt/model.py'
[2023/9/5 20:31] Upload file 'C:\Users\Lenovo\Desktop\看过的文章\code\FusionGAN\FusionGAN-master\README.md' to '/mnt/README.md'
[2023/9/5 20:31] Upload file 'C:\Users\Lenovo\Desktop\看过的文章\code\FusionGAN\FusionGAN-master\test_one_image.py' to '/mnt/test_one_image.py'
[2023/9/5 20:31] Upload file 'C:\Users\Lenovo\Desktop\看过的文章\code\FusionGAN\FusionGAN-master\utils.py' to '/mnt/utils.py'
[2023/9/5 20:31] Upload to root@hz-t3.matpool.com:26634 password completed in 1 sec, 951 ms: 6 files transferred (25.2 kbit/s)
点击箭头选择服务器地址
出现如图所示
cd ../mnt
ls -a
通过unzip解压FusionGAN.zip(名字可能不一样修改FusionGAN.zip即可)
unzip FusionGAN.zip -d FusionGAN
解压成功
在这里修改远程同步文件夹目录,选择 tool-depolyment-configuration-Mappings
将地址改成新生成的地址
重新上传文档,先点project(如果出现upload to是灰色的问题一定是没点project)(如果只需要更新一个代码文件就点击那一个代码再点上传),再点tool,重新上传
回到终端,通过cd指令进入文件夹
cd FusionGAN
cd FusionGAN-master
在FusionGAN-master文件夹下,通过命令行输入
python test_one_image.py
出现报错,提示缺少包
pip install scipy==1.1.0
成功安装包
python test_one_image.py
测试成功
结果保存在result中
从tool中下载, tool-depolyment-download form root…
可以看到成功下载到本地
命令行输入
python main.py
出现报错
OSError: Can't write data (file write failed:)
这种报错是由于网盘大小不够引起的,由于免费的内存只有5G,新生成的.h5文件存放在网盘内并且远大于5G,导致数据溢出,这种情况只能氪金,要运行完整个程序至少要50G以上。购买50G以上的网盘内存(后面想到可以一开始就将文件挪到服务器桌面上运行,由于已经购买了空间就不进行尝试了,还没掉坑里的小伙伴可以试一下)
购买足够的硬盘空间后,出现报错:
File "main.py", line 45, in main
srcnn.train(FLAGS)
File "/mnt/FusionGAN/FusionGAN-master/model.py", line 104, in train
train_data_ir, train_label_ir = read_data(data_dir_ir)
File "/mnt/FusionGAN/FusionGAN-master/utils.py", line 31, in read_data
with h5py.File(path, 'r') as hf:
File "/root/miniconda3/envs/myconda/lib/python3.5/site-packages/h5py/_hl/files.py", line 408, in __init__
swmr=swmr)
File "/root/miniconda3/envs/myconda/lib/python3.5/site-packages/h5py/_hl/files.py", line 173, in make_fid
fid = h5f.open(name, flags, fapl=fapl)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
File "h5py/h5f.pyx", line 88, in h5py.h5f.open
OSError: Unable to open file (unable to open file: name = './checkpoint/Train_ir/train.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)
将model.py中98、99行代码从:
if config.is_train:
data_dir_ir = os.path.join('./{}'.format(config.checkpoint_dir), "Train_ir","train.h5")
data_dir_vi = os.path.join('./{}'.format(config.checkpoint_dir), "Train_vi","train.h5")
改成
if config.is_train:
data_dir_ir = os.path.join("checkpoint_20", "Train_ir","train.h5")
data_dir_vi = os.path.join("checkpoint_20", "Train_vi","train.h5")
继续产生错误
Traceback (most recent call last):
File "main.py", line 48, in <module>
tf.app.run()
File "/root/miniconda3/envs/myconda/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 125, in run
_sys.exit(main(argv))
File "main.py", line 45, in main
srcnn.train(FLAGS)
File "/mnt/FusionGAN/FusionGAN-master/model.py", line 144, in train
for ep in xrange(config.epoch):
NameError: name 'xrange' is not defined
将144行和147行xrange改成range
for ep in range(config.epoch):
# Run by batch images
batch_idxs = len(train_data_ir) // config.batch_size
for idx in range(0, batch_idxs):
batch_images_ir = train_data_ir[idx*config.batch_size : (idx+1)*config.batch_size]
batch_labels_ir = train_label_ir[idx*config.batch_size : (idx+1)*config.batch_size]
batch_images_vi = train_data_vi[idx*config.batch_size : (idx+1)*config.batch_size]
batch_labels_vi = train_label_vi[idx*config.batch_size : (idx+1)*config.batch_size]
至此开始训练
整个训练时长大约一小时,通过矩池云查看GPU占用达到90%左右
最终运行结果
模型保存在checkpoint/CGAN_120文件夹下,通过查看checkpoint/CGAN_120文件夹可以看到model有更新
之前的文件夹下内容