https://www.jianshu.com/p/2cf00bb9db34?utm_source=oschina-app

穷学生学习神经网络一定体会过“等待”的痛苦。。。
循环一次epoch急死人,但是有几十个上百个循环等着你!
你盯着屏幕看着进度条像蜗牛一样推进,真是恨铁不成钢,心想等日后发达了一定要买一台好电脑...
只能先干干其他的事儿,但是心里又不放心,总是会来看,结果还是没训练完,算了,正事儿是干不了了,刷刷手机吧~

... ...(半小时过去)

终于训练完啦!看看结果:
woc...@#$&&**&

苦逼地重新训练一次....o(╥﹏╥)o

前几天看网上说Google推出了免费的GPU专门给机器学习的穷孩子们用!顿时让我激动了起来,马上去试用了一下。(哦,自备梯子...)

参考教程:
Google Colab Free GPU Tutorial
薅资本主义羊毛,用Google免费GPU

但是因为自己的项目跟教程中的不太一样,有一些细节没有说清楚,查了很多资料终于解决,决定这里把我自己的使用过程记录下来:

Google Colaboratory

直接Google一下:

 
 

点击进去看看:

发现是Colaboratory的简介,里面附有一些简单的代码告诉你怎么使用这个玩意儿。你会发现它跟Jupyternotebook很像,因为它就是在jupyter notebook基础上开发的:

 
 

所以很好理解,Google给你准备了一个云端的jupyter notebook,你把你的代码搬过来,在云端运行你的代码,耗费的不是你自己电脑的计算力,而是Google Colaboratory的计算力,而Google Colaboratory配备了Tesla K80 GPU!这可是贵族用的玩意儿呀,哎呀捡着大便宜了!

 
 

但是这个GPU不是默认开启的,需要你设置一下notebook,很简单:

点击笔记本上的“修改(edit)-->笔记本设置(notebook setting)”:

 
 

就出现了下面的窗口,在“硬件加速器”中选择“GPU”即可:

 
 

吼吼,就好了!

上面介绍的是Colaboratory的简单使用和怎么开启GPU,下面介绍怎么把本地的项目放到云端运行:

Google drive+Colaboratory 运行你的项目

Google Colaboratory是基于Google云端硬盘(drive)的,你的所有代码文件都会保存在Google Drive中,所有我们首先需要Google drive。

先说说我自己的是什么项目吧:

我在本地的notebook中有这样的一个做“神经网络风格迁移(neural style transfer)”的项目,目录如下:

 
 

.ipynb就是我的jupyter notebook文件,

imagenet-vgg-verydeep-19是我下载的VGG神经网络模型,

nst_utils.py里面有一些功能函数,也需要在.ipynb中调用。

什么是neural style transfer呢?就是做这个:

 
 

这个神经网络跑起来可是相当费时的,我自己的电脑,生成一个400×300大小的图片,跑200个epoch需要30分钟!所以虽然这个项目很激动人心,但是等一次结果真的很急人!

好了,现在我们开始把这个本地项目转移到Google drive上,并通过Colaboratory来运行!:

1.把文件夹上传到Google drive

 
 

图中的NST文件夹就是我上传的。目录结构跟我本地的一样:

 
image

文件不能直接打开,但是Google drive里面有Colaboratory插件,可以打开.ipybn文件:

右键选择打开方式:

 
 
 
 

我的这个文件里面,需要import我的NST文件夹中的nst_utils.py文件,因为里面写了很多重要函数,但运行一下程序,肯定会报错,说找不到nst_utils.py文件

为啥呢?因为Colaboratory并没有关联你的Google drive!所以,接着设置:

2.安装必要的库,授权,连接你的Google drive

这个Colaboratory很牛逼的一点就是,它不光是一个notebook,还可以当命令行用!

我们在所有代码前面,加一个单元格,粘贴如下命令:

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

运行!你应该看到类似下面这种结果:

 
 

点击结果里面的验证链接,会跳到一个网页,显示一长串验证码
将验证码复制粘贴到上面的框框中,回车!

好了,然后再在一个新单元格中输入下面命令:

!mkdir -p drive
!google-drive-ocamlfuse drive

再运行!就设置好了!

这样,Google drive就和Google Colaboratory连接好了,基本就可以像操作本地文件一样来操作云端的代码了。

3.如何导入Google drive中的文件

现在如果直接写:

from nst_utils import *

还是会报错,说找不到!这个地方折磨了我好久,不知道怎么回事儿。

后来发现,Colaboratory好像是单独创建了一个虚拟机,在虚拟机中只有我运行的ipybn文件,而没有NST文件夹中的其他文件。
我们在前一步的设置,只是让Colaboratory和drive连接了,也就是Colaboratory可以调用drive中的文件了,但是应该通过类似绝对路径的方式导入,所以正确的方法应该是写

from drive.NST.nst_utils import *

drive就是我们的根目录,通过“ . ”来进入下一层目录,这样就可以导入我们的drive文件了!

同样的,后面我们需要导入NST文件夹中的imagenet-vgg-verydeep-19.mat文件,也就是我们的神经网络模型,这样写是错误的:

model = load_vgg_model("imagenet-vgg-verydeep-19.mat")

正确的写法是:

model = load_vgg_model("drive/NST/imagenet-vgg-verydeep-19.mat")

同样的,只要是要导入drive中的文件,都按照类似的绝对路径的方法来导入就可以了。

4.看看这个GPU效果如何

具体代码就不展示了,只给大家看看模型运行的结果:

 
 

运行了200个epoch,共耗时46秒!
而我在本地运行,花了30分钟左右~
可见这个速度提升地多块!Google大法好啊~
下面附上每20次迭代的结果:

 
 

最开始的图片是这两张:

 
左边是陆家嘴照片,右边是现代派风格图片

最后生成的图片是:

 
现代派风格的陆家嘴

好了,关于Colaboratory的使用就先介绍到这里,主要我目前只知道这么多。。。日后有新的经验会继续更新!

8月1号更新:

这几天在使用中发现,挂载google drive的那两段命令,在每一次新建一个notebook时都需要运行一次,所以大家可以把那两段命令放在一个方便查看的地方,随时复制粘贴

而且,一个项目可能到了第二天就不能连接drive了,这个时候需要再运行一下命令。反正我的项目都是第二天早上起来就需要重新连接drive了。
所以还是稍微有些麻烦。。。

另外,第一次运行命令的时候,跳出来一个链接,点击然后输入验证码之后,可能它又会跳出来一个一模一样的链接,同时整个版面像被清空了一样,这个时候,只要再次点击链接,再次输入验证码然后回车,看到“Access token retrieved correctly.” 就说明可以了。
然后别忘了另起一行,运行:

!mkdir -p drive
!google-drive-ocamlfuse drive

然后就可以连接drive了。

欢迎关注我的“深度学习”专栏:
DeepLearning.ai学习笔记
和我一起一步步学习深度学习吧!

作者:Stack_empty
链接:https://www.jianshu.com/p/2cf00bb9db34
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

colab找不到模块 no name的更多相关文章

  1. 1>MSBUILD : cordova-build error BLD401: 错误: BLD00401: 找不到模块“C:\Users\z-pc\AppData\Roaming\npm\node_modules\vs-tac\app.js”。请转到“工具”-->“选项”-->“Apache Cordova 工具”-->“Cordova 工具”-->“清除 Cordova 缓存”,然后尝试重新生成

    1>------ 已启动全部重新生成: 项目: BlankCordovaApp2, 配置: Debug Android ------1>  Your environment has bee ...

  2. vs2017 编译vue 错误 TS2307 Build:找不到模块“webpack”。

    升级了vs2017之后,编译之前正常的工程,发现出现了对vue的编译错误, 提示一些列找不到模块的错误 错误 TS2307 Build:找不到模块“webpack”. ...... 错误 TS2345 ...

  3. 【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)

    python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...

  4. nodejs 模块以及加载机制,主要讨论找不到模块的问题

    最主要的一个思想,加载模块无非就是找到模块在哪,只要清楚了模块的位置以及模块加载的逻辑那么找不到模块的问题就迎刃而解了.本文只是综合了自己所学的知识点进行总结,难免出现理解错误的地方,请见谅. nod ...

  5. pyinstaller打包后运行提示找不到模块

    截止到2017年9月20号,pyinstaller只支持到python3.5,如果需要支持到3.6,需要自己在github上下载pyinstaller的开发版. 在打包时候,并没有提示错误,可以顺利打 ...

  6. cygwin执行.py提示找不到模块,但已经安装模块的解决办法

    . 在解决了cygwin中make命令不能使用的问题之后(https://www.cnblogs.com/zhenggege/p/10724122.html),make maskrcnn路径下的set ...

  7. win cmd执行Python脚本提示找不到模块问题

    Windows关于命令行执行Python脚本,提示找不到模块的问题,我 本人也是在pycharm上运行没毛病的,后来在本地搞了个Jenkins做定时任务,谁知道就提示找不到模块 也百度了很多,都是说什 ...

  8. dos窗口运行python文件提示找不到模块

    问题:在pycharm直接运行test_suit.py正常,通过dos窗口运行则提示找不到模块. 原因: https://blog.csdn.net/crylearner/article/detail ...

  9. 互联网前沿技术——01 找不到模块“lodash”

    检查安装 node --version 修改 安装:npm install 启动:grunt server 如果报错: 找不到模块"lodash" https://www.soin ...

随机推荐

  1. 阿里云出手SaaS生态,中国SaaS市场小而不强有望破解

    企业服务SaaS市场还有很大的增长空间.SaaS的鼻祖Salesforces今年5月迈上了千亿美元市值的门槛,再一次为ToB市场注入了兴奋剂.单单一个SaaS CRM,目前全球的市场规模就超过400亿 ...

  2. 基于 DataLakeAnalytics 的数据湖实践

    随着软硬件各方面条件的成熟,数据湖(Data Lake)已经越来越受到各大企业的青睐, 与传统的数仓实践不一样的是,数据湖不需要专门的“入仓”的过程,数据在哪里,我们就从哪里读取数据进行分析.这样的好 ...

  3. ubuntu安装verilog

    1.安装verilog sudo apt-get install verilog 2.安装gtkwave sudo apt-get install gtkwave 3.安装dinotrace(和gtk ...

  4. 【JZOJ4709】【NOIP2016提高A组模拟8.17】Matrix

    题目描述 输入 输出 样例输入 4 3 5 4 1 7 3 4 7 4 8 样例输出 59716 数据范围 解法 40%暴力即可: 60%依然暴力: 100%依次计算第一行和第一列对答案的贡献即可: ...

  5. js图片压缩和上传并显示

    由于近期项目中需要做个图片压缩上传,所以就在网上找了些资料自己写了一个 html部分 <input id="file" type="file"> & ...

  6. js Date格式化时间兼容写法

    var time = "2018-03-12 11:11:11".split(/[- : \/]/); date = new Date(time[0], time[1]-1, ti ...

  7. pygame-常用的方法

    1.pygame常用的方法 2.语音 图片

  8. Gradle中的buildScript,gradle wrapper,dependencies等一些基础知识

    就想收藏一篇好文,哈哈,无他 Gradle中的buildScript代码块 - 黄博文 然后记录一些gradle的基础知识: 1.gradle wrapper就是对gradle的封装,可以理解为项目内 ...

  9. 【巨人的步伐以及人类的进击】BSGS algorithm

    原问题 求ax≡b(mod p)的最小正整数解. 解法 实际上是以空间换取时间的算法. 先用散列表把 ai (i∈[0,p√)) 都储存起来. 然后再从小到大枚举 j (j∈[0,p√)) ,在散列表 ...

  10. c++编译错误:invalid new-expression of abstract class type

    原因: 出现这个错误原因是new 了一个抽象类出错,说明父类(接口)中有纯虚函数没有实现.接口里的纯虚函数全部需要实现,这样才能new 子类. 例如: 纯虚函数例如 ; 是纯虚函数,不是纯虚函数不作要 ...