1. 程式人生 > >用谷歌的GPU跑你的程式碼----Colaboratory使用記錄

用谷歌的GPU跑你的程式碼----Colaboratory使用記錄

    Google不愧為大佬,給我們這些小(窮)白(鬼)開放了一個Gpu的埠,讓我們的體會了一下GPU的速度。本人親測,我的程式碼在我的筆記本上跑了20分鐘,但上傳到Colaboratory上只需要3分鐘就可以給我答案。但Colaboratory並不是那麼簡單,我研究了一天,終於找到了一些技巧,特意記錄下來。  Colaboratory是谷歌雲盤的一個工具,谷歌官方給出的解釋是“Colaboratory是一種資料分析工具,可將文字、程式碼和程式碼輸出內容合併到一個協作文件中”。其實在我看來就是一個Jupyter Notebook,不過它也不是一個簡單的Jupyter Notebook,因為它是在linux系統下,所以我們可以用linux系統命令來控制Colaboratory。  一、基本操作

  1.1新建

   Colaboratory新建直接在空白地方右擊,新建Colaboratory,如果沒有找到選擇關聯更多應用,搜一下Colaboratory就行。新建完成後直接點選開啟就行。

1.2執行模式改為GPU


1.3程式碼執行

直接在程式碼單元格里寫程式碼就行,然後點選左邊的執行標誌,程式碼就開始執行。

import tensorflow as tf
import numpy as np

with tf.Session():
  input1 = tf.constant(1.0, shape=[2, 3])
  input2 = tf.constant(np.reshape(np.arange(1.0, 7.0, dtype=np.float32), (2, 3)))
  output = tf.add(input1, input2)
  result = output.eval()

result

執行結果


二、上傳、下載資料

  由於我們每次開啟Colaboratory都是Google 隨機給我們分配一臺伺服器,所以我們每次的資料都不能儲存,所以我們需要掌握如何上傳資料和下載資料

  2.1上傳資料

  2.1.1網路上資料集

  由於Colaboratory其實本質上是linux伺服器,我們可以通過linux命令來下載資料。但由於在Colaboratory上,所以我們需要注意Colaboratory不能直接執行linux命令,我們可以通過在命令前面加上!來執行命令(大部分linux命令在前面加上“!”都能實現),比如我們下載Stanford Dogs資料集,可以通過下面命令:

!wget http://vision.stanford.edu/aditya86/ImageNetDogs/images.tar

執行效果如下:


可以看到檔案下載下來啦,我下載下來的是壓縮包,利用linux命令來解壓就行,只要在命令前加上英文的感嘆號就可以執行。

2.1.2本地上傳資料

from google.colab import files

uploaded = files.upload()

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))

files.upload返回上傳檔案的字典。字典是由檔名鍵入的,值是上傳的資料。

這段程式碼我沒有試過,我也是在無意中看見的,應該可以執行

2.2下載資料

當你的程式碼執行完成,你需要將你執行後儲存的檔案(假設你有儲存檔案),可以通過以下程式碼來下載資料。

from google.colab import files

with open('123.txt', 'w') as f:
  f.write('some content')

files.download('123.txt')

由於每次都是Google隨機給你分配的伺服器,所以你每次的資料都無法儲存,如果可以的話,你還是把需要的資料及時下載下來。

三、其他

還有一些其他的命令和ipython上可以執行,也可以在Colaboratory執行,下面是我的一些總結

%cd directory 更改工作目錄
%pwd 返回系統當前工作目錄
%env 以字典形式返回系統環境變數

以上是我目前所用到的Colaboratory相關的知識,後序我將繼續更新我的其他學習知識。

注:Colaboratory是在谷歌雲盤上的,需要翻牆出去才能使用,所以你需要翻牆才能使用Colaboratory。如果你有能翻牆,那你可以盡情的使用谷歌的GPU,如果你沒有翻牆的技術,那我只能說這種事你可以花點錢嗎,花點。