如何用 Google Colab 練 Python?

自動(dòng)配置、有效求助、協(xié)作編程、版本控制。一站式解決 Python 新手練習(xí)中的痛點(diǎn)。

痛點(diǎn)

這個(gè)學(xué)期,我在北得克薩斯大學(xué)(University of North Texas)教 INFO 5731: Computational Methods for Information Systems 課程,主要內(nèi)容包括: Python 基礎(chǔ)、自然語(yǔ)言處理,以及機(jī)器學(xué)習(xí)。

授課的對(duì)象是信息科學(xué)、數(shù)據(jù)科學(xué)專業(yè)的碩士與博士研究生。跟在國(guó)內(nèi)一樣,我依然使用翻轉(zhuǎn)教學(xué)(flipped instruction)方式。

過(guò)去的幾周,我們把“Python 基礎(chǔ)”部分學(xué)完了。

每周,我都會(huì)要求學(xué)生閱讀兩本教材上的指定章節(jié),然后把所有的代碼自己重復(fù)一遍。在此基礎(chǔ)上,對(duì)每一段代碼,學(xué)生都要自己試著進(jìn)行一些改動(dòng)。出錯(cuò)也沒(méi)有關(guān)系,嘗試解決。

因?yàn)榻^大部分學(xué)生,都是 Python 初學(xué)者。因此他們都會(huì)遇到以下的實(shí)際問(wèn)題。

一、不知道如何安裝和設(shè)置運(yùn)行環(huán)境;

二、遇到問(wèn)題會(huì)慌亂,不知如何有效尋找解決方法;

三、對(duì)于團(tuán)隊(duì)作業(yè),不知該如何有效協(xié)作;

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

這些問(wèn)題,也構(gòu)成了學(xué)生的痛點(diǎn)。

如果不能有效加以解決,學(xué)生會(huì)把每周寶貴的學(xué)習(xí)時(shí)間,浪費(fèi)到許多瑣碎的無(wú)用功上。更可能的情況,是他們的信心會(huì)被打擊,導(dǎo)致喪失學(xué)習(xí)的動(dòng)力和興趣。

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

這款工具,就是 Google Colab 。我曾經(jīng)在《如何免費(fèi)云端運(yùn)行Python深度學(xué)習(xí)框架?》一文中為你介紹過(guò)它,在《如何用 Python 和循環(huán)神經(jīng)網(wǎng)絡(luò)做中文文本分類?》和《如何用 Python 和循環(huán)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)嚴(yán)重交通擁堵?》里,我也曾用它給你做過(guò)代碼的展示。

下面,我給你介紹一下,如何用 Google Colab 應(yīng)對(duì)上述的4個(gè)痛點(diǎn),為你的 Python 練習(xí)提供輔助。

環(huán)境

新手最常見(jiàn)的問(wèn)題,就是好不容易累積了學(xué)習(xí)的興趣,上手不久便遇到報(bào)錯(cuò)。

而 Python 新手遇到的許多錯(cuò)誤,實(shí)際上都和環(huán)境的配置有關(guān)。

例如說(shuō),Anaconda 套件下載環(huán)節(jié),你就不知道該選擇哪個(gè)版本。

好不容易安裝好了,因?yàn)槁窂皆O(shè)置問(wèn)題,連 Jupyter Notebook 都呼叫不出來(lái)。

終于能輸入代碼了。結(jié)果一輸入就提示,你要調(diào)用的模塊名稱,沒(méi)聽(tīng)說(shuō)過(guò)!

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

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

https://colab.research.google.com

就可以看到以下頁(yè)面。

選擇新建 Python 3 筆記本。

然后,就能看到完全配置好的 Python 運(yùn)行環(huán)境了。

對(duì),就是這么簡(jiǎn)單。

你可別小瞧這個(gè)運(yùn)行環(huán)境。

雖然你沒(méi)有執(zhí)行任何安裝過(guò)程,但是它基本上涵蓋了你做數(shù)據(jù)科學(xué)分析,要用到的各種工具。

這些工具包括但不限于 Numpy, Scipy, Pandas 等,甚至連深度學(xué)習(xí)的框架,例如 Tensorflow, Keras 和 Pytorch,也是一應(yīng)俱全。

Google Colab 的深度學(xué)習(xí)環(huán)境支持,可不只是軟件那么簡(jiǎn)單。Google 慷慨的提供了 GPU, 甚至是更專業(yè)化的 TPU, 供你免費(fèi)使用。

默認(rèn)狀態(tài),這些云端硬件是不開(kāi)啟的。你需要在菜單欄中選擇 runtime,然后選擇 Change runtime type。

就可以看到不同硬件支持的選項(xiàng)了。

有的書(shū)籍樣例代碼,甚至是 Python 組件,都需要 Python 2 環(huán)境才能運(yùn)行,這也沒(méi)關(guān)系。點(diǎn)擊新建筆記本,你就能使用不同的 Python 版本了。

細(xì)心的你會(huì)發(fā)現(xiàn),在上面“修改運(yùn)行時(shí)設(shè)置”頁(yè)面里,也可以隨時(shí)調(diào)整 Python 版本。

求助

作為新手,你遇到錯(cuò)誤和問(wèn)題,是完全正常的。

Python 具有強(qiáng)大的社區(qū),可以給你提供很多幫助。

但如果你嘗試過(guò),便可能有一種錯(cuò)覺(jué)——這些 Python 高手很不友好。因?yàn)槟阗N了問(wèn)題,卻沒(méi)人理你。

其實(shí),這很可能是你問(wèn)問(wèn)題的方式不對(duì)。

想想看,你籠統(tǒng)地說(shuō)一個(gè)報(bào)錯(cuò)信息,可能的原因或許有數(shù)十甚至上百種,誰(shuí)能幫你一一排除?

這倒也罷了??墒悄忝髅髻N了一段代碼,還給出了錯(cuò)誤信息的截圖啊。為什么還是沒(méi)有人伸出援手?

因?yàn)檫@些信息,可能依然不夠。

想想看,你本地安裝了什么樣的套件?其中的各種模塊,都分別是什么版本?你執(zhí)行當(dāng)前代碼有問(wèn)題,那上下文是什么?會(huì)不會(huì)是因?yàn)橹澳硞€(gè)代碼段落,影響了你當(dāng)前段落的執(zhí)行?你的操作系統(tǒng),是否完全支持你正在使用的組件功能?……

這些可能性,無(wú)窮無(wú)盡。同樣,也沒(méi)有人這樣花時(shí)間幫你枚舉。

但是有了 Google Colab ,你提問(wèn)的效果卻可以大大提升。

因?yàn)?,你可以?* 最簡(jiǎn)單的方法,讓潛在的回答者復(fù)現(xiàn)**你的問(wèn)題。

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

如上圖,點(diǎn)擊筆記本右上角的 Share 按鈕。

在出現(xiàn)的對(duì)話框里,注意選擇權(quán)限。選成可以瀏覽(view),就可以了。

然后,選擇“復(fù)制鏈接”,鏈接就到了你的剪切板里面了。把它連同你的文字描述,直接貼到 Python 的論壇或者課程討論區(qū)里。

別人只需要點(diǎn)擊,就能查看你的全部代碼、報(bào)錯(cuò)信息。而且,還能運(yùn)行你的筆記副本。

注意,雖然你倆可能用的是不同的操作系統(tǒng)、不同的瀏覽器,但因?yàn)槎加昧?Google Colab ,你們的 Python 環(huán)境是完全一致的。

等到對(duì)方解決了問(wèn)題,他還可以把完整的筆記本再用鏈接方式分享給你。你的問(wèn)題于是迎刃而解。

問(wèn)問(wèn)題,只是尋求幫助的一個(gè)方面。

在提問(wèn)之前,你還是應(yīng)該自己嘗試一下解決的。毫不愿意思考,直接當(dāng)伸手黨,社區(qū)里的人很難喜歡跟你打交道。

Google Colab 為你主動(dòng)尋找問(wèn)題答案,提供了工具支持。每當(dāng)你遇到報(bào)錯(cuò)的時(shí)候,你都會(huì)看到下方有個(gè)按鈕。

點(diǎn)擊這個(gè)按鈕, Google Colab 就會(huì)用搜索引擎,在 Stackoverflow 這個(gè) IT 問(wèn)答站點(diǎn)上,幫你尋找相關(guān)報(bào)錯(cuò)的已有答案。

一般來(lái)說(shuō),點(diǎn)擊前幾條信息,你就會(huì)有收獲。

例如這次,你就很幸運(yùn),因?yàn)榇鸢该鞔_說(shuō)明,這是因?yàn)?Python 版本帶來(lái)的差異。

你只需要根據(jù)提示,進(jìn)行代碼的輕微調(diào)整,就能正常運(yùn)行了。

協(xié)作

不知你有沒(méi)有嘗試過(guò)跟人協(xié)作編寫(xiě)代碼?

我的課上,是有小組作業(yè)的。要求學(xué)生2-3人一組,一起用 Python 解決問(wèn)題。

有的人,是這樣協(xié)作的。

自己寫(xiě)一段代碼,用郵件傳給對(duì)方。

對(duì)方改完,發(fā)回來(lái)。

自己在上面修改添加,再發(fā)回去。

……

這樣顯然效率很低。

有沒(méi)有高效的方法?

當(dāng)然有。依然利用我們剛才已經(jīng)見(jiàn)到過(guò)的共享功能。

只是這一次,在選擇權(quán)限的時(shí)候,給對(duì)方“可修改”權(quán)限。

例如還是剛才的 print 命令沒(méi)有加括號(hào)的問(wèn)題。只不過(guò)這次,對(duì)方除了能看到你的問(wèn)題,還可以直接編輯。

你的協(xié)作者,新建了一個(gè)代碼塊,并且輸入了正確的信息。

在你這里看起來(lái),就是這個(gè)樣子的。

協(xié)作者的頭像,會(huì)顯示在對(duì)應(yīng)的修改內(nèi)容旁邊。這樣一目了然。

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

例如輸入以下內(nèi)容。

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

這樣一來(lái),團(tuán)隊(duì)協(xié)作 Python 練習(xí)溝通的效率,自然就高了許多。

注意,為了安全起見(jiàn),一定只能把該權(quán)限,限定在你信任的協(xié)作者中。

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

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

然后,選擇你希望保存到的 Github 項(xiàng)目。

保存完畢后,對(duì)應(yīng)的 Github 頁(yè)面會(huì)自動(dòng)打開(kāi),供你預(yù)覽。

其中可以包含全部的文字、圖片、代碼、輸出信息。注意筆記本的頂部,有一個(gè)“在 Colab 打開(kāi)”的鏈接。

點(diǎn)擊它,你就能迅速開(kāi)啟 Google Colab 環(huán)境,并且直接運(yùn)行這個(gè) Github 上的筆記副本。

版本

當(dāng)你不停地嘗試和改動(dòng)代碼的時(shí)候,很有可能會(huì)把問(wèn)題改得更加糟糕。這時(shí)候,你恨不得有一個(gè)時(shí)光機(jī),可以讓你回到錯(cuò)誤少一點(diǎn)的時(shí)候。

這個(gè)時(shí)光機(jī),Google Colab 是提供了的。

點(diǎn)擊菜單里面的 Revision history 功能,你就能看到當(dāng)前筆記本已保存的全部歷史版本。

包括修改時(shí)間、誰(shuí)改的、文件大小等各種信息,一應(yīng)俱全。

想回到哪個(gè)版本,點(diǎn)一下“恢復(fù)”按鈕就可以了。

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

一定要注意選擇需要的存儲(chǔ)路徑,避免不知存到哪里去了。

我一般讓學(xué)生交作業(yè)的時(shí)候,都需要同時(shí)提交 Google Colab 鏈接,以及一個(gè) ipynb 文件。

二者的內(nèi)容,應(yīng)該是一樣的。既然如此,為什么還需要提交兩樣?xùn)|西呢?

這個(gè)問(wèn)題,作為思考題,留給你。請(qǐng)注意聯(lián)系本節(jié)標(biāo)題,加以分析。

有了 ipynb 文件,你可以用本地的 Jupyter Notebook 開(kāi)啟。但是如果你只是想查看內(nèi)容的話,這里給你推薦一個(gè)更好的工具,叫做 nteract 。它可以幫你直接開(kāi)啟 ipynb 文件,用于查看。

這樣,你就沒(méi)必要每次都用 Jupyter Notebook 命令開(kāi)啟后臺(tái)服務(wù),然后再到瀏覽器中點(diǎn)開(kāi)對(duì)應(yīng)的 ipynb 了。

小結(jié)

還記得在《如何高效學(xué) Python ?》一文中,我給你推薦過(guò)的經(jīng)典教材《笨辦法學(xué) Python》吧?

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

本文給你推薦的 Google Colab ,可以幫你解決 Python 初學(xué)者練習(xí)實(shí)踐 Python 編程時(shí),最常遇到的幾大痛點(diǎn)。包括:

  • 自動(dòng)配置
  • 有效求助
  • 協(xié)作編程
  • 版本控制

這樣一來(lái),你可以把寶貴的時(shí)間,聚焦在技能的掌握和應(yīng)用;而不是久病成醫(yī),成為“環(huán)境配置專家”了。

祝 Python 編程學(xué)習(xí)愉快!

延伸閱讀

你可能也會(huì)對(duì)以下話題感興趣。點(diǎn)擊鏈接就可以查看。

喜歡請(qǐng)點(diǎn)贊和打賞。還可以微信關(guān)注和置頂我的公眾號(hào)“玉樹(shù)芝蘭”(nkwangshuyi)。

如果你對(duì) Python 與數(shù)據(jù)科學(xué)感興趣,不妨閱讀我的系列教程索引貼《如何高效入門數(shù)據(jù)科學(xué)?》,里面還有更多的有趣問(wèn)題及解法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容