如何用 Google Colab 練 Python?

2021-02-07 玉樹芝蘭

自動配置、有效求助、協作編程、版本控制。一站式解決 Python 新手練習中的痛點。

痛點

這個學期,我在北德克薩斯大學(University of North Texas)教 INFO 5731: Computational Methods for Information Systems 課程,主要內容包括: Python 基礎、自然語言處理,以及機器學習。

授課的對象是信息科學、數據科學專業的碩士與博士研究生。跟在國內一樣,我依然使用翻轉教學(flipped instruction)方式。

過去的幾周,我們把「Python 基礎」部分學完了。

每周,我都會要求學生在課前閱讀兩本教材上的指定章節,然後把所有的代碼自己重複一遍。在此基礎上,對每一段代碼,學生都要自己試著進行一些改動。出錯也沒有關係,嘗試解決。

因為絕大部分學生,都是 Python 初學者。因此他們都會遇到以下的實際問題。

一、不知道如何安裝和設置運行環境;

二、遇到問題會慌亂,不知如何有效尋找解決方法;

三、對於團隊作業,不知該如何有效協作;

四、不懂得如何進行版本控制,代碼越改越亂。

這些問題,也構成了學生的痛點。

如果不能有效加以解決,學生會把每周寶貴的學習時間,浪費到許多瑣碎的無用功上。更可能的情況,是他們的信心會被打擊,導致喪失學習的動力和興趣

因此,我為他們找到了一款合適的 Python 練習工具。這裡,我把這款工具也分享給你。

這款工具,就是 Google Colab 。我曾經在《如何免費雲端運行Python深度學習框架?》一文中為你介紹過它,在《如何用 Python 和循環神經網絡做中文文本分類?》和《如何用 Python 和循環神經網絡預測嚴重交通擁堵?》裡,我也曾用它給你做過代碼的展示。

下面,我給你介紹一下,如何用 Google Colab 應對上述的4個痛點,為你的 Python 練習提供輔助。

環境

新手最常見的問題,就是好不容易累積了學習的興趣,上手不久便遇到報錯。

而 Python 新手遇到的許多錯誤,實際上都和環境的配置有關。

例如說,Anaconda 套件下載環節,你就不知道該選擇哪個版本。

好不容易安裝好了,因為路徑設置問題,連 Jupyter Notebook 都呼叫不出來。

終於能輸入代碼了。結果一輸入就提示,你要調用的模塊名稱,沒聽說過!

而這些,Google Colab 都幫你處理好了。

只需要打開一個瀏覽器(推薦 Google Chrome 或者 Firefox),輸入:

https://colab.research.google.com

就可以看到以下頁面。

選擇新建 Python 3 筆記本。

然後,就能看到完全配置好的 Python 運行環境了。

對,就是這麼簡單。

你可別小瞧這個運行環境。

雖然你沒有執行任何安裝過程,但是它基本上涵蓋了你做數據科學分析,要用到的各種工具。

這些工具包括但不限於 Numpy, Scipy, Pandas 等,甚至連深度學習的框架,例如 Tensorflow, Keras 和 Pytorch,也是一應俱全。

Google Colab 的深度學習環境支持,可不只是軟體那麼簡單。Google 慷慨的提供了 GPU, 甚至是更專業化的 TPU, 供你免費使用。

默認狀態,這些雲端硬體是不開啟的。你需要在菜單欄中選擇 runtime,然後選擇 Change runtime type。

就可以看到不同硬體支持的選項了。

有的書籍樣例代碼,甚至是 Python 組件,都需要 Python 2 環境才能運行,這也沒關係。點擊新建筆記本,你就能使用不同的 Python 版本了。

細心的你會發現,在上面「修改運行時設置」頁面裡,也可以隨時調整 Python 版本。

求助

作為新手,你遇到錯誤和問題,是完全正常的。

Python 具有強大的社區,可以給你提供很多幫助。

但如果你嘗試過,便可能有一種錯覺——這些 Python 高手很不友好。因為你貼了問題,卻沒人理你。

其實,這很可能是你問問題的方式不對。

想想看,你籠統地說一個報錯信息,可能的原因或許有數十甚至上百種,誰能幫你一一排除?

這倒也罷了。可是你明明貼了一段代碼,還給出了錯誤信息的截圖啊。為什麼還是沒有人伸出援手?

因為這些信息,可能依然不夠。

想想看,你本地安裝了什麼樣的套件?其中的各種模塊,都分別是什麼版本?你執行當前代碼有問題,那上下文是什麼?會不會是因為之前某個代碼段落,影響了你當前段落的執行?你的作業系統,是否完全支持你正在使用的組件功能?……

這些可能性,無窮無盡。同樣,也沒有人這樣花時間幫你枚舉。

但是有了 Google Colab ,你提問的效果卻可以大大提升。

因為,你可以用** 最簡單的方法,讓潛在的回答者復現**你的問題。

這就是,把你的筆記本共享出去。

如上圖,點擊筆記本右上角的 Share 按鈕。

在出現的對話框裡,注意選擇權限。選成可以瀏覽(view),就可以了。

然後,選擇「複製連結」,連結就到了你的剪切板裡面了。把它連同你的文字描述,直接貼到 Python 的論壇或者課程討論區裡。

別人只需要點擊,就能查看你的全部代碼、報錯信息。而且,還能運行你的筆記副本。

注意,雖然你倆可能用的是不同的作業系統、不同的瀏覽器,但因為都用了 Google Colab ,你們的 Python 環境是完全一致的。

等到對方解決了問題,他還可以把完整的筆記本再用連結方式分享給你。你的問題於是迎刃而解。

問問題,只是尋求幫助的一個方面。

在提問之前,你還是應該自己嘗試一下解決的。毫不願意思考,直接當伸手黨,社區裡的人很難喜歡跟你打交道。

Google Colab 為你主動尋找問題答案,提供了工具支持。每當你遇到報錯的時候,你都會看到下方有個按鈕。

點擊這個按鈕, Google Colab 就會用搜尋引擎,在 Stackoverflow 這個 IT 問答站點上,幫你尋找相關報錯的已有答案。

一般來說,點擊前幾條信息,你就會有收穫。

例如這次,你就很幸運,因為答案明確說明,這是因為 Python 版本帶來的差異。

你只需要根據提示,進行代碼的輕微調整,就能正常運行了。

協作

不知你有沒有嘗試過跟人協作編寫代碼?

我的課上,是有小組作業的。要求學生2-3人一組,一起用 Python 解決問題。

有的人,是這樣協作的。

自己寫一段代碼,用郵件傳給對方。

對方改完,發回來。

自己在上面修改添加,再發回去。

……

這樣顯然效率很低

有沒有高效的方法?

當然有。依然利用我們剛才已經見到過的共享功能。

只是這一次,在選擇權限的時候,給對方「可修改」權限。

例如還是剛才的 print 命令沒有加括號的問題。只不過這次,對方除了能看到你的問題,還可以直接編輯。

你的協作者,新建了一個代碼塊,並且輸入了正確的信息。

在你這裡看起來,就是這個樣子的。

協作者的頭像,會顯示在對應的修改內容旁邊。這樣一目了然。

對方還可以在代碼塊旁,選擇添加注釋。

例如輸入以下內容。

你可以同步在自己的筆記本上,看到對方的注釋。

這樣一來,團隊協作 Python 練習溝通的效率,自然就高了許多。

注意,為了安全起見,一定只能把該權限,限定在你信任的協作者中。

如果是打算把你的成果展示出來,你可以使用 Google Colab 與 Github 的集成功能。

如上圖,選擇保存副本到 Github 。

然後,選擇你希望保存到的 Github 項目。

保存完畢後,對應的 Github 頁面會自動打開,供你預覽。

其中可以包含全部的文字、圖片、代碼、輸出信息。注意筆記本的頂部,有一個「在 Colab 打開」的連結。

點擊它,你就能迅速開啟 Google Colab 環境,並且直接運行這個 Github 上的筆記副本。

版本

當你不停地嘗試和改動代碼的時候,很有可能會把問題改得更加糟糕。這時候,你恨不得有一個時光機,可以讓你回到錯誤少一點的時候。

這個時光機,Google Colab 是提供了的。

點擊菜單裡面的 Revision history 功能,你就能看到當前筆記本已保存的全部歷史版本。

包括修改時間、誰改的、文件大小等各種信息,一應俱全。

想回到哪個版本,點一下「恢復」按鈕就可以了。

另外,你也可以把 Google Colab 筆記本,直接下載成為 ipynb 文件,在本地保存副本。

一定要注意選擇需要的存儲路徑,避免不知存到哪裡去了。

我一般讓學生交作業的時候,都需要同時提交 Google Colab 連結,以及一個 ipynb 文件。

二者的內容,應該是一樣的。既然如此,為什麼還需要提交兩樣東西呢?

這個問題,作為思考題,留給你。請注意聯繫本節標題,加以分析。

有了 ipynb 文件,你可以用本地的 Jupyter Notebook 開啟。但是如果你只是想查看內容的話,這裡給你推薦一個更好的工具,叫做 nteract 。它可以幫你直接開啟 ipynb 文件,用於查看。

這樣,你就沒必要每次都用 Jupyter Notebook 命令開啟後臺服務,然後再到瀏覽器中點開對應的 ipynb 了。

小結

還記得在《如何高效學 Python ?》一文中,我給你推薦過的經典教材《笨辦法學 Python》吧?

《笨辦法學 Python》指出了一條看似笨拙,卻非常有效的學習路徑。我上課的時候,也一直在跟學生們強調—— Python 這樣的實踐類技能,只能練中學(Learn by doing)。

本文給你推薦的 Google Colab ,可以幫你解決 Python 初學者練習實踐 Python 編程時,最常遇到的幾大痛點。包括:

這樣一來,你可以把寶貴的時間,聚焦在技能的掌握和應用;而不是久病成醫,成為「環境配置專家」了。

祝 Python 編程學習愉快!

延伸閱讀

你可能也會對以下話題感興趣。點擊連結就可以查看。

喜歡請點讚和打賞。還可以微信關注和置頂我的公眾號「玉樹芝蘭」(nkwangshuyi)。

如果你對 Python 與數據科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門數據科學?》,裡面還有更多的有趣問題及解法。

由於微信公眾號外部連結的限制,文中的部分連結可能無法正確打開。如有需要,請點擊文末的「閱讀原文」按鈕,訪問可以正常顯示外鏈的版本。

知識星球入口在這裡:


相關焦點

  • 20種小技巧,玩轉Google Colab
    或者,你也可以手動打開 GitHub notebook,將 github.com 替換為 colab.research.google.com/github 即可。dl1/00_notebook_tutorial.ipynb甚至更簡單的方法是用 githubtocolab.com 替換 github.com。
  • 20種小技巧,玩轉Google Colab
    擴展程序下載地址:https://chrome.google.com/webstore/detail/open-in-colab/iogfkhleblhcpcekbiedikdehleodpjo安裝後,單擊 GitHub notebook 的 colab 圖標直接將其打開
  • 薅資本主義羊毛,用Google免費GPU
    你可以用它來提高Python技能,也可以用Keras、TensorFlow、PyTorch、OpenCV等等流行的深度學習庫來練練手,開發深度學習應用。地址在這裡,Google還貼心地寫了中文版簡介:https://colab.research.google.com/notebook即便如此,據說還有人不會用?
  • Colab操作指南
    今天我就跟大家講講怎麼用這個colab(不要問我為啥知道,問就是血淚史)。Colab他還有一個名字叫福音,不,我瞎掰扯的。但是他的確是廣大貧苦學子的福音。好了,鑑於我們真的是一個正經的技術貼,下面開始我們的正題。 Colab是由google研發的,它免費提供CPU、GPU甚至TPU資源。
  • 來自谷歌:史上最強的Python在線編輯器
    2)基本用法用過jupyter notebook的朋友應該對這個界面非常的熟悉,事實上colab的操作與普通的notebook相似度非常高,下面我們就新建一個Python3的除了python庫之外,使用這種方式還可以執行其他linux指令來部署你自己的雲端環境,別忘了在指令前加一個「!」號就好。
  • 教程 | 如何利用Google Colab免費訓練StarCraft II
    如果你想開始使用 FREE StarCraft II 機器學習環境,請先完善 GPU 硬體,您可以看一下我的 Google Colab notebook:https://colab.research.google.com/drive/1AzCKV98UaQQz2aJIeGWlExcxBrpgKsIV最近,我和幾位朋友開始了 StarCraft II 的機器學習項目。
  • 沒有GPU的同學想學習深度學習,可以試試Google Colab Notebooks!
    前提:這時需要能夠打開google哦,否則就不用看了。1 了解Colab notebooks1.1 創建notebooks首先,進入Google雲端網盤[1],如下圖:貧窮的我,還不知道TPU是如何使用的。1.2 基本指令了解如果你懂一些linux指令那就更好了。首先,我們看看python的版本。
  • 如何用 GPT2 和 BERT 建立一個可信的 reddit 自動回復機器人?
    這項工作還參考了以下內容:https://colab.research.google.com/drive/1VLG8e7YSEwypxU-noRNhsv5dW4NfTGce;https://colab.research.google.com/github/google-research/bert/blob/master/predicting_movie_reviews_with_bert_on_tf_hub.ipynb
  • 如何免費雲端運行Python深度學習框架?
    用上這款雲端應用,讓你免安裝Python運行環境。一分錢不用花,以高性能GPU,輕鬆玩兒轉深度學習。(由於微信公眾號外部連結的限制,文中的部分連結可能無法正確打開。如有需要,請點擊文末的「閱讀原文」按鈕,訪問可以正常顯示外鏈的版本。)痛點《如何用Python和深度神經網絡識別圖像?》一文發布後,收到了很多讀者的留言。
  • 如何用 Python 腳本批量下載 Google 圖像?
    問題《如何用Python和深度神經網絡識別圖像?》一文中,我給你展示了如何用深度學習,教電腦區分機器人瓦力和哆啦a夢。很快就有用戶在後臺留言,問:老師,我想自己訓練一個圖片分類器,到哪裡去批量下載帶標註的訓練圖像呢?說說我寫教程的時候,是如何找圖片的吧。最大的圖片庫,當然就是 Google 了。
  • 教你怎樣用python進行語音識別
    例如Cloud Speech API,但是需要你使用google雲平臺的前提。speech recognition對於python這一非常成熟的膠水語言,在網上找一些現成的工具包真的不是一個太難的問題。
  • Google Calaboratory 的另一個 XSS 漏洞
    我是如何找到 Google Colaboratory 中的一個 xss 漏洞的 我們先來簡單回顧一下上篇文章中我們是如何找到 Google Calaboratory 中的那個 XSS 的:1四年前我在博客文章中寫了另一個關於通過cookie 引發 XSS 的例子 gmail和google的兩個xss老漏洞分析,所以這裡直接給出攻擊方案:1、如果在 Google 其他任意的子域上存在一個我們能利用的 XSS,例如:some-random-domain.google.com
  • 如何在Python中將語音轉換為文本
    在本教程中,你將知道如何使用SpeechRecognition 庫在Python中將語音轉換為文本 。因此,我們不需要從頭開始構建任何機器學習模型,該庫為我們提供了各種著名的公共語音識別API(例如Google Cloud Speech API,IBM Speech To Text等)的便捷包裝。
  • Google的神經網絡表格處理模型TabNet介紹
    它是如何工作的,又如何可以嘗試呢? 表格數據可能構成當今大多數業務數據。 這篇論文的第一個圖,如下重現,描繪了信息是如何聚集起來形成預測的。
  • google ProtoBuf開發者指南
    更多細節請參考手冊信息,查看語言指導( http://code.google.com/apis/protocolbuffers/docs/proto.html ),Python API( http://code.google.com/apis/protocolbuffers/docs/reference/python/index.html ),和編碼手冊( http://code.google.com
  • 如何學python-第六課 流程控制-IF,ELSE,條件語句
    現在,我們向用戶詢問」你喜歡用什麼搜尋引擎?」,然後輸入了google.程序接收到了輸入,並做了以下處理:注意,python的語法規則嚴重依賴於縮進(你姑且可以把縮進理解為程序前面的那些空白,但是縮進的概念遠非於此),所以,一定一定記得打上一個tab空格。因為我們輸入了google,所以被賦值為字符串」google」的變量UserInput 與「google「是相等的,我們的程序便執行了判斷為真時執行的語句。