文章目录
0.说在前面
Colaboratory 是一个研究项目,可免费使用。并且提供免费GPU!
Colaboratory 是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果。它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行。 Colaboratory 支持在线安装包以及linux命令等操作。
有一点非常重要:它与google driver绑定!每次启动,会为用户分配一个新的内存空间,如果说你想要长期使用,必须上传文件至你的google driver,接下来一起来研究如何持久化使用google driver!
先祭出两个玩意的网址:Google Colab、Google Drive。
访问Google的各种网站可以看这里,如何安装谷歌访问助手https://www.cnblogs.com/qiqi715/p/11503715.html
1.Google Drive
研究Colab之前,了解一下Google Driver基本操作,首先来看如何上传文件及其他基本操作!
基本操作
打开上述googl driver官网,进去就可以看到这个页面,然后空白处点击右键就会出现创建文档与上传文档操作,只需要点击右键即可完成这个上传操作(或者其他操作)!
当然第一次用Colab和Drive合作要绑定一下,操作就是上图,右键后点红圈。
2.Google Colab使用
安装各种工具包
使用!pip install 或者!apt-get install命令,在Colab中,在命令前加上感叹号“!”运行的就是linux命令。
用Colab运行GoogleDrive中的.py文件
为了能运行Google Drive上文件夹中assignment1的py文件,首先我们要将当前工作目录挂载在google Driver上的”assignment1”路径下。在colab随便新建一个py文件,插入代码块,然后就可以准备执行命令。
第一步就是要挂载Google Drive(挂载一次管10小时,要重新验证)
from google.colab import drive
drive.mount('/content/drive')
运行后会出现一个链接,点击该链接,选择自己的google账号,短信验证之后复制出现的密钥,粘贴至下方框中即可。
挂载过一次就ok了,就会如上图所示在左边可以出现树形文件浏览界面,我的assignment1是在Google Drive根目录下的。
再修改当前工作目录到“assignment1”目录下,使用python的 os模块的chdir()函数,之后检查当前目录的文件,得到如下结果:
下载数据集
训练模型当然少不了大量数据集,当然你可以通过拖曳将本地数据集上传到Google Drive上,可是那样你会崩溃的——太慢慢慢慢慢慢慢了。所以,最好的办法是让谷歌服务器直接下载数据,而不是本地电脑下载数据集再传送过去。怎么做呢?
使用!wget命令,例如:
!wget https://launchpad.net/~alessandro-strada/+archive/ubuntu/google-drive-ocamlfuse-beta/+build/15740102/+files/google-drive-ocamlfuse_0.7.1-0ubuntu3_amd64.deb
由于下载的是.zip压缩包,需要解压:
使用!unzip命令。
当然数据可以直接弄到Drive上
可以安装插件,具体看这里:Google Drive直存插件
设置GPU
按下图在ipynb文件界面选择菜单
然后选择类型:
验证GPU运行状态
import tensorflow as tf
tf.test.gpu_device_name()
显示:'/device:GPU:0'
,然后执行
!/opt/bin/nvidia-smi
显示正常,搞定。
开搞CS231n by Colab
反正东西不大,先把assignment1弄下来本地,再上传到Google Drive,当然也可以用插件直接保存到Google Drive。
授权
法一:虚拟机上安装谷歌云盘
老师给出了授权代码,直接copy过来,不过为什么里面为什么这样也不知道,先记下来:
注定我是不会用这个方法。。。
# 授权验证
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!wget https://launchpad.net/~alessandro-strada/+archive/ubuntu/google-drive-ocamlfuse-beta/+build/15740102/+files/google-drive-ocamlfuse_0.7.1-0ubuntu3_amd64.deb
!dpkg -i google-drive-ocamlfuse_0.7.1-0ubuntu3_amd64.deb
!apt-get install -f
!apt-get -y install -qq 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}
创建drive目录
指定根目录!
#指定Google Drive云端硬盘的根目录,名为drive
!mkdir -p drive
!google-drive-ocamlfuse drive
法二直接挂载(这个前几节有讲过):
from google.colab import drive
drive.mount('/content/drive')
貌似这样挂了以后,根目录就是drive了,不能再写./content/drive
下载数据集
我是本地下好直接传上Drive的,这里老师给的直接在Drive上下,因为dataset那个目录下面有个sh文件,不过里面的东西要整理一下,源文件貌似缺了换行,不知道是不是windows的原因。
# Get CIFAR10
wget http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
tar -xzvf cifar-10-python.tar.gz
rm cifar-10-python.tar.gz
下面是在Drive上下载数据集咋整:
首先进入assignment1目录,这个目录根据你的情况来修改!!!可以一步一步的cd ls来查看!,然后开头都是cd content/drive/ 后面的根据情况改!!!
!cd "/content/My Drive/assignment1" && ls
**注意:**路径名或者变量中间有空格时,可以用双引号括起来,不然会报错:bash: cd: too many arguments,另外,要查看进入文件夹下的东西要吧ls写在一行。
紧接执行下面这个命令,然后下载数据集!
!cd ./cs231n/datasets && bash get_datasets.sh && ls
实际执行时候要一步写到进入datasets文件夹:
!cd "drive/My Drive/assignment1/cs231n/datasets" && bash get_datasets.sh && ls
如下图所示:
不过这里404错误,估计是链接有问题(链接后面那里出现了%0D,估计是在windows下编辑过),我东西已经下载过了,不纠结了。
补充
看了李宏毅2020版机器学习的课,又学到一招如何直接加载数据,怕有些人不能翻墙,直接copy过来。原文链接
一般來說,Google Drive 的檔案連結會是類似下面的結構:
https://drive.google.com/open?id=1duQU7xqXRsOSPYeOR0zLiSA8g_LCFzoV
其中 “open?id=” 後面的那一串亂碼稱為 file_id
在 colab 中,我們可以直接用 file_id 下載檔案,優點是這個過程不需要再手動輸入任何訊息,但缺點是下載下來的檔案在程式執行完畢後就會消失,也就是每一次都必須重新下載,使得執行時間增加。
# 下載 file_id 為 "1duQU7xqXRsOSPYeOR0zLiSA8g_LCFzoV" 的檔案,並將它命名為 Minori.jpg
!gdown --id '1duQU7xqXRsOSPYeOR0zLiSA8g_LCFzoV' --output Minori.jpg
# 列出目前目錄下所有的檔案
!ls
正式开工
切换路径
返回我们的任务数据集目录,或许你跟我的不一样,但是开头/content/drive 与结尾的asssignment1都一样!至于中间是什么,根据你在google driver的目录来配置,我是在根目录下创建了一个colab_learn文件夹,然后将任务放在这里面!自己修改一下即可!!!
!cd "/content/My Drive/assignment1"
然后开始运行knn.ipynb第一行代码,看是否报错!
如果报错,如下图:
则说明是路径问题,此时你需要运行!ls查看当前目录是否在assignment1目录,如果不在,肯定会报错的,所以你进入到这个目录里面才可以,也就是上面cd命令一定要检查是否正确!
cd命令看来不靠谱,用上面写过的os.chdir
import os
os.chdir("drive/My Drive/assignment1/")
!pwd
这样就ok了。
补充:
使用!pip install 安装运行第一个实验要用的包:
scipy、numpy,pillow,pil,matplotlib,future,貌似colab都装好了
读取图片的包被更新了,把data_utils.y代码改下:
#from scipy.misc import imread
from imageio import imread
另外,每次运行挂载都要短信验证,有没有方法去掉这个步骤?