华为云深度学习服务试水笔记

最近接了一个图像识别的项目,公司配的笔记本电脑只是GT840M 2G显存,只能跑跑LeNet、MobileNet v2、NASNet Mobile这些小模型。效果虽然过得去,但是每个EPOCH几十分钟,真的让人心急死,都懒得去调参数。

干脆用华为云深度学习服务,测试一下。

华为云DLS的版本:

keras 2.2.0

tensorflow 1.8.0

有opencv、numpy等

但没有imutils,也就是原本 paths.list_images('/train')这样的,就得重写

所以获取图片的路径是首先要解决

先用OBS browser将图片传上OBS

image.png

目录架构如下:

s3://obs-xxxxxx/

                         |

                         -train

                                |

                                -type1

                                         |

                                         -001.jpg

                                         -002.jpg

                                -type2

                                         -001.jpg

                                         -002.jpg

                                .........

                        |

                         - test

                                |

                                -type1

                                         |

                                         -001.jpg

                                         -002.jpg

                                -type2

                                         -001.jpg

                                         -002.jpg

从OBS拉过图片过来

def getFilesHw(filepath):
    list = []
    dirs=mox.file.list_directory(filepath)
    for dir in dirs:
        files=mox.file.list_directory(filepath+dir+'/')
        for file in files:
            f=filepath+dir+'/'+file
            #print(f)
            list.append(f)
    return list
trainPaths = 's3://obs-xxxxxx/train/'
files=getFilesHw(trainPaths)

总算将目录拉过来了,问题用image=cv2.imread(imagePath)直接就空的呢(imagePath是写's3://obs-xxxxxx/train/type1/001.jpg')?

查了半天原来要这样用

image = cv2.imdecode(np.fromstring(mox.file.read(imagePath, binary=True), np.uint8), cv2.IMREAD_COLOR)

图片读过来了。

其它训练过程就和本地keras一样,毕竟不熟悉的情况不敢轻易用mox的api

然而到了保存环节,又来杯具了:

model.save(s3://obs-xxxxxx/model.bin) #直接报错

保存不了,只能用折中的办法,先将文件保存到DLS的本地,然后再复制回OBS

model.save('model.bin')
mox.file.copy('model.bin', s3://obs-xxxxxx/model.bin)

不过pickle方面就好很多,原来的代码是这样

f = open("label.bin", "wb")
f.write(pickle.dumps(label))
f.close()

改写成这样

with mox.file.File("s3://obs-xxxxxx/label.bin", "wb") as f:
    f.write(pickle.dumps(label))
    f.close()

至此完成移植,用华为云强大GPU测试一下,果然P100跑LeNet是小菜一碟,1分钟不到就搞定,有木有啊?

image.png

并且P100有16G显存,可以体验VGG、ResNet这些规模大的网络。

购买华为云请点击立即购买

转载于:https://my.oschina.net/u/4146444/blog/3060569

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值