這個學期,我在北得克薩斯大學(University of North Texas)教「INFO 5731: Computational Methods for Information Systems」課程,主要內容包括: Python 基礎、自然語言處理,以及機器學習。 授課的對象是信息科學、數據科學專業(yè)的碩士與博士研究生。跟在國內一樣,我依然使用翻轉教學(flipped instruction)方式。過去的幾周,我們把「Python 基礎」部分學完了。每周,我都會要求學生在課前閱讀兩本教材上的指定章節(jié),然后把所有的代碼自己重復一遍。在此基礎上,對每一段代碼,學生都要自己試著進行一些改動。出錯也沒有關系,嘗試解決。 因為絕大部分學生,都是 Python 初學者。因此他們都會遇到以下的實際問題:
這些問題,也構成了學生的痛點。如果不能有效加以解決,學生會把每周寶貴的學習時間,浪費到許多瑣碎的無用功上。更可能的情況,是他們的信心會被打擊,導致喪失學習的動力和興趣。 因此,我為他們找到了一款合適的 Python 練習工具。這里,我把這款工具也分享給你。 這款工具,就是 Google Colab 。我曾經在《如何免費云端運行Python深度學習框架?》一文中為你介紹過它,在《如何用 Python 和循環(huán)神經網絡做中文文本分類?》和《如何用 Python 和循環(huán)神經網絡預測嚴重交通擁堵?》里,我也曾用它給你做過代碼的展示。 下面,我給你們介紹一下如何用 Google Colab 應對上述的 4 個痛點,為你的 Python 練習提供輔助。 環(huán)境新手最常見的問題,就是好不容易累積了學習的興趣,上手不久便遇到報錯。而 Python 新手遇到的許多錯誤,實際上都和環(huán)境的配置有關。例如說,Anaconda 套件下載環(huán)節(jié),你就不知道該選擇哪個版本。 好不容易安裝好了,因為路徑設置問題,連 Jupyter Notebook 都呼叫不出來。終于能輸入代碼了。結果一輸入就提示,你要調用的模塊名稱,沒聽說過! 而這些,Google Colab 都幫你處理好了。只需要打開一個瀏覽器(推薦 Google Chrome 或者 Firefox),輸入:https://colab.research.google.com 就可以看到以下頁面。 選擇新建 Python 3 筆記本,然后就能看到完全配置好的 Python 運行環(huán)境了。 對,就是這么簡單。你可別小瞧這個運行環(huán)境,雖然你沒有執(zhí)行任何安裝過程,但是它基本上涵蓋了你做數據科學分析,要用到的各種工具,這些工具包括但不限于 Numpy、Scipy、Pandas 等,甚至連深度學習的框架,例如 Tensorflow、Keras 和 Pytorch,也是一應俱全。 Google Colab 的深度學習環(huán)境支持,可不只是軟件那么簡單。Google 慷慨的提供了 GPU, 甚至是更專業(yè)化的 TPU, 供你免費使用。 默認狀態(tài),這些云端硬件是不開啟的。你需要在菜單欄中選擇 runtime,然后選擇 Change runtime type,就可以看到不同硬件支持的選項了。 有的書籍樣例代碼,甚至是 Python 組件,都需要 Python 2 環(huán)境才能運行,這也沒關系。點擊新建筆記本,你就能使用不同的 Python 版本了。 細心的你會發(fā)現,在上面的「修改運行時設置」頁面里,也可以隨時調整 Python 版本。 求助作為新手,你遇到錯誤和問題,是完全正常的。而 Python 具有強大的社區(qū),可以給你提供很多幫助。 但如果你嘗試過,便可能有一種錯覺——這些 Python 高手很不友好。因為你貼了問題,卻沒人理你。其實,這很可能是你問問題的方式不對。想想看,你籠統(tǒng)地說一個報錯信息,可能的原因或許有數十甚至上百種,誰能幫你一一排除?這倒也罷了??墒悄忝髅髻N了一段代碼,還給出了錯誤信息的截圖啊。為什么還是沒有人伸出援手?因為這些信息,可能依然不夠。 想想看,你本地安裝了什么樣的套件?其中的各種模塊,都分別是什么版本?你執(zhí)行當前代碼有問題,那上下文是什么?會不會是因為之前某個代碼段落,影響了你當前段落的執(zhí)行?你的操作系統(tǒng),是否完全支持你正在使用的組件功能……這些可能性,無窮無盡。同樣,也沒有人這樣花時間幫你枚舉。 但是有了 Google Colab ,你提問的效果卻可以大大提升。因為,你可以用最簡單的方法,讓潛在的回答者復現你的問題。這就是,把你的筆記本共享出去。如下圖,點擊筆記本右上角的 Share 按鈕。 在出現的對話框里,注意選擇權限。選成可以瀏覽(view),就可以了。 然后,選擇「復制鏈接」,鏈接就到了你的剪切板里面了。把它連同你的文字描述,直接貼到 Python 的論壇或者課程討論區(qū)里。別人只需要點擊,就能查看你的全部代碼、報錯信息。而且,還能運行你的筆記副本。注意,雖然你倆可能用的是不同的操作系統(tǒng)、不同的瀏覽器,但因為都用了 Google Colab ,你們的 Python 環(huán)境是完全一致的。等到對方解決了問題,他還可以把完整的筆記本再用鏈接方式分享給你。你的問題于是迎刃而解。 問問題,只是尋求幫助的一個方面。在提問之前,你還是應該自己嘗試一下解決的。毫不愿意思考,直接當伸手黨,社區(qū)里的人很難喜歡跟你打交道。而 Google Colab 為你主動尋找問題答案提供了工具支持。每當你遇到報錯的時候,你都會看到下方有個按鈕。 點擊這個按鈕, Google Colab 就會用搜索引擎,在 Stackoverflow 這個 IT 問答站點上,幫你尋找相關報錯的已有答案。 一般來說,點擊前幾條信息,你就會有收獲。例如這次,你就很幸運,因為答案明確說明,這是因為 Python 版本帶來的差異。你只需要根據提示,進行代碼的輕微調整,就能正常運行了。 協作不知你有沒有嘗試過跟人協作編寫代碼?我的課上,是有小組作業(yè)的。要求學生 2 – 3 人一組,一起用 Python 解決問題。有的人,是這樣協作的:自己寫一段代碼,用郵件傳給對方;對方改完,發(fā)回來;自己在上面修改添加,再發(fā)回去…… 這樣顯然效率很低。有沒有高效的方法?當然有。依然利用我們剛才已經見到過的共享功能。 只是這一次,在選擇權限的時候,給對方「可修改」權限。 例如還是剛才的 print 命令沒有加括號的問題。只不過這次,對方除了能看到你的問題,還可以直接編輯。你的協作者,新建了一個代碼塊,并且輸入了正確的信息。 在你這里看起來,就是這個樣子的。協作者的頭像,會顯示在對應的修改內容旁邊。這樣一目了然。 對方還可以在代碼塊旁,選擇添加注釋。 例如輸入以下內容。 你可以同步在自己的筆記本上,看到對方的注釋。 這樣一來,團隊協作 Python 練習溝通的效率,自然就高了許多。 注意,為了安全起見,一定只能把該權限,限定在你信任的協作者中。 如果是打算把你的成果展示出來,你可以使用 Google Colab 與 Github 的集成功能。如下圖,選擇保存副本到 Github 。 然后,選擇你希望保存到的 Github 項目。 保存完畢后,對應的 Github 頁面會自動打開,供你預覽。其中可以包含全部的文字、圖片、代碼和輸出信息。注意筆記本的頂部,有一個「在 Colab 打開」的鏈接。 點擊它,你就能迅速開啟 Google Colab 環(huán)境,并且直接運行這個 Github 上的筆記副本。 版本當你不停地嘗試和改動代碼的時候,很有可能會把問題改得更加糟糕。這時候,你恨不得有一個時光機,可以讓你回到錯誤少一點的時候。這個時光機,Google Colab 是提供了的。 點擊菜單里面的 Revision history 功能,你就能看到當前筆記本已保存的全部歷史版本,包括修改時間、誰改的、文件大小等各種信息,一應俱全,想回到哪個版本,點一下「恢復」按鈕就可以了。 另外,你也可以把 Google Colab 筆記本,直接下載成為 ipynb 文件,在本地保存副本。 一定要注意選擇需要的存儲路徑,避免不知存到哪里去了。 我一般讓學生交作業(yè)的時候,都需要同時提交 Google Colab 鏈接,以及一個 ipynb 文件。二者的內容,應該是一樣的。既然如此,為什么還需要提交兩樣東西呢?這個問題,作為思考題,留給你。請注意聯系本節(jié)標題,加以分析。 有了 ipynb 文件,你可以用本地的 Jupyter Notebook 開啟。但是如果你只是想查看內容的話,這里給你推薦一個更好的工具,叫做 https:/// 。它可以幫你直接開啟 ipynb 文件,用于查看。這樣,你就沒必要每次都用 Jupyter Notebook 命令開啟后臺服務,然后再到瀏覽器中點開對應的 ipynb 了。 小結還記得在《如何高效學 Python ?》一文中,我給你推薦過的經典教材《笨辦法學 Python》吧? 《笨辦法學 Python》指出了一條看似笨拙,卻非常有效的學習路徑。我上課的時候,也一直在跟學生們強調——Python 這樣的實踐類技能,只能練中學(Learn by doing)。 |
|