在代码段输入以下代码:
!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} &1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
from google.colab import drive
drive.mount("/content/drive")
import os
path="/content/drive/MyDrive"
os.chdir(path)
os.listdir(path)
path="/content/drive/MyDrive"包含内容为如下界面内容:
得到的结果为:['Colab Notebooks', 'Untitled', 'Untitled0.ipynb', 'colab']
最近在用谷歌云盘的colab跑目标检测的代码,要把KITTI图像数据集保存在谷歌云盘,但是在官网上好像需要发送到邮箱然后再下载比较麻烦,所以在CSDN上找到了这个好链接,可以直接在colab上用代码下载保存在谷歌云盘,非常nice! 分享给大家
各类图像数据集下载地址
在云盘中要保存的地址
import os
os.chdir('/content/drive/MyDrive/Colab')
下面是下载数据集的代码,只需要【!wget 网址】
# 下载数据集,后面记得换上自己需要的数据集网址
!wget https://s3.eu-central-1.amazonaws.com/avg-kitti/data_object_image_2.zip
!/opt/bin/nvidia-smi
!ls
!pwd
!mkdir XXX 新建文件夹,XXX是你的路径与文件名,例如下图是在根目录下创建data文件夹。
!mkdir ./data
#设置根目录为此路径,即工作路径
import os
os.chdir('/content/drive/MyDrive/paper/fastswa_semi_metric_files/')
上面代码是设置云端硬盘项目主目录为工作根目录,这样子的话就无需改动,项目里面的路径了,对了项目中要使用相对路径,否则会报错。如实在需要使用绝对路径,那么一定要是 /content/drive/MyDrive/ 开头。这样的话,我们就进入到了我们的项目中了,再执行下面的命令就可以运行我们的mian.py 了,前面感叹号一定要是英文感叹号。
! python main.py
如此一来就可以在Colab中连接到谷歌云端硬盘,然后再进入项目主目录运行我们的代码了。但是又有个问题来了,就是我们的Colab服务器与云端硬盘并不是在一台服务器上,所以如果我们的项目中有大量的数据需要读取,那么这个I/O操作是非常消耗时间的。这个时间简直让人疯了,比我本机还慢,所以为了解决这个问题,需要把云端的数据加载到上文的 content 路径下,例如上文的data 目录下。首先把数据打包成zip压缩包上传到云端硬盘中,例如我的数据是data-local.zip,放在Demo路径下,使用如下命令进行copy到./data/下,也就是content/data路劲下,Linux中./表示主目录content/。
!cp /content/drive/MyDrive/paper/Demo/data-local.zip ./data/
然后再进入到./data目录下,解压data-local.zip数据,这个过程都很快,前面copy数据也非常快,然后就需要改一下代码中的读取数据的路径了,改成./data/data-local/XXX 即可读取,这时候运行起来就非常快了!
!cd ./data && unzip data-local.zip
import os
os.chdir('drive/Colab/自己的文件')
不放心的话切换之后用!s命令查看是不是到指定目录
3. 运行代码
!python xx.py
1. Linux系统下文件路径使用‘/’而不是“\”,所有带“\”路径都会提示文件不存在
2. 使用云端硬盘保存数据
直接使用colab可以上传临时数据,保存临时结果,一旦断开连接,数据将会丢失,所以强烈建议使用云端硬盘保存数据。
3. 断开连接的解决办法
在使用Colab时,一段时间挂机未操作有可能导致连接断开,但是要是想跑时间较长的项目时不可能一直盯着屏幕,解决办法如下:
在浏览器中按F12,找到console将下面的代码粘贴到控制台运行即可。
function ClickConnect(){
colab.config
console.log("Connnect Clicked - Start");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click();
console.log("Connnect Clicked - End");
};
setInterval(ClickConnect, 60000)
4. 运行时间过长的项目
建议保存中间结果,下次使用时直接读取中间结果继续跑。
在Firefox和Chrome中,在colab页面,按Ctrl+Shit+i,打开检查页面(也可以右击鼠标,选择“检查”),并切换到控制台或terminal标签,chrome中为Console。
function ConnectButton(){
console.log("Connect pushed");
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click()
}
setInterval(ConnectButton,60000);
执行了代码后,记下弹出的数字,那是intervalId,当想停止这段代码的执行时,只需要执行
clearInterval(intervalId)
要保存我们的模型检查点(或任何文件),我们需要将其保存在驱动器的安装路径中。eg.
model_save_name = 'classifier.pt'
path = F"/content/gdrive/My Drive/{model_save_name}"
torch.save(model.state_dict(), path)
记住我们保存的路径:
eg.
model_save_name = 'classifier.pt'
path = F"/content/gdrive/My Drive/{model_save_name}"
model.load_state_dict(torch.load(path))
我想将训练的中间结果写到Drive里保存,需要等所有任务都完成,并且在这边显示已经存在,回到Drive目录里查看仍然啥都没有,这个时候就可能页面关了,缓存文件还没更新过去。实际使用中,可以在需要同步的地方手动强制刷新:
# 实现对网盘的同步
drive.flush_and_unmount()