华为云深度学习服务试水笔记
最近接了一个图像识别的项目,公司配的笔记本电脑只是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这些规模大的网络。
- 点赞
- 收藏
- 关注作者
评论(0)