华为云深度学习服务试水笔记
【摘要】 因笔记本弱爆的GT840M,尝试将原本的keras代码移植到华为云DLS上跑,记录一下调试过程
最近接了一个图像识别的项目,公司配的笔记本电脑只是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
目录架构如下:
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分钟不到就搞定,有木有啊?
并且P100有16G显存,可以体验VGG、ResNet这些规模大的网络。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
技术火炬手2019/04/24 08:39:441楼编辑删除举报