薅羊毛之Colab的使用

0.说在前面

Colaboratory 是一个研究项目,可免费使用。并且提供免费GPU

Colaboratory 是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果。它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行。 Colaboratory 支持在线安装包以及linux命令等操作。

有一点非常重要:它与google driver绑定!每次启动,会为用户分配一个新的内存空间,如果说你想要长期使用,必须上传文件至你的google driver,接下来一起来研究如何持久化使用google driver!
先祭出两个玩意的网址:Google ColabGoogle Drive
访问Google的各种网站可以看这里,如何安装谷歌访问助手https://www.cnblogs.com/qiqi715/p/11503715.html

1.Google Drive

研究Colab之前,了解一下Google Driver基本操作,首先来看如何上传文件及其他基本操作!
基本操作
打开上述googl driver官网,进去就可以看到这个页面,然后空白处点击右键就会出现创建文档与上传文档操作,只需要点击右键即可完成这个上传操作(或者其他操作)!

upload
当然第一次用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

另外,每次运行挂载都要短信验证,有没有方法去掉这个步骤?

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值