榮登前十個神級好用的Python函式庫,你知道幾個?(4)

榮登前十個神級好用的Python函式庫,你知道幾個?(4)
榮登前十個神級好用的Python函式庫,你知道幾個?(4)

是哪10個Python函式庫榮登去年最好用?”這些”函式庫你都知道嗎?(4)

本系列文章為【2020年度十大Python函式庫-人工智慧 · 機器學習必備 】的最後一篇。上一篇介紹了 PyTorch 版的 Keras「PyTorch Lightening」讓你告別沒完沒了的 Debug!另外還有微軟出的 Hummingbird 讓你不用重新設計新模型;另外還有可以將高維度資料視覺化的「HiPlot」,請點此看下一篇

閱讀了解!

HiPlot

幾乎每個數據工程師都處理過高維度資料(High Dimensional)。可惜人類的腦容量有限,沒辦法直觀地處理此類資料,因此必須求助於科技來解決。

2020 年早些時候,Facebook 發布了 HiPlot函式庫,可以使用平行座標和其他圖形方式來表示信息,從而協助找出高維度資料中的關聯性和模式。他們在官網中說明了其概念,基本上,HiPlot 是一種將高維度資料視覺化以及過濾的便利方法。

 

Scalene

隨著 Python 的函式庫生態系統變得越來越複雜,我們也寫出越來越多 C 語言延伸的代碼以及多執行緒代碼。但是,CPython 內置的效能分析器(profiler)無法完整地處理多執行緒和本機代碼。

此時你需要 Scalene:Scalene 是用於 Python 腳本的 CPU 和記憶體的效能分析器(profiler),能夠完整地處理多執行緒代碼並區分運行 Python 和本機代碼所花費的時間。此時你無需修改代碼,只需要在命令行中使用 Scalene 運行腳本,腳本就會自動生成報告的文字檔或 HTML,顯示代碼中每一行的 CPU 和記憶體使用情況。

▲ Scalene 是用於 Python 腳本的 CPU 和記憶體的效能分析器,能處理多執行緒代碼並區分運行 Python 和本機代碼所花費的時間

 

同場加映:Norfair

選出去年十大 Python 函式庫的機器學習顧問公司 Tyrolabs 自家也開發了「影像內容分析 (Video content analysis)」的 Python 函式庫「Norfair」。

Norfair 是一個輕量的且可以被客製化的 Python 函式庫,用於即時物件追蹤(real-time object tracking):它可以在不同的影格當中,替每個被偵測到的物件賦予獨一無二的 ID,如此一來,你就能輕易辨識出這些物件——縱使它們都在移動。

▲ Norfair 可以在不同的影格當中,替每個被偵測到的物件(如圖中左側)
賦予獨一無二的 ID (如圖中右側)

 

藉由 Norfair,工程師只需要輸入幾行代碼就能賦予任何偵測器追蹤的功能——不管追蹤的物體是具有有四個參數的 bounding box(邊界框)、只有單一點的幾何中心(centroid)、還有人體姿態辨識系統的輸出(經常有多個關鍵點是大於特定閥值的)等任何物體。

此功能經常被用作計算兩個追蹤物體之間的距離,用戶可以依序需要定義檢測標準以及追縱的對象。

Norfair 是非常模塊化的 Python 函式庫,使用起來十分靈巧:工程師僅需使用幾行代碼,即可在現有的檢測代碼庫上添加追蹤的功能。

 

 

 

 

 

 

推薦文章:
用說的就能寫程式!人工智慧替手傷工程師開發語音程式工具


人工智慧能「聽咳嗽聲認出新冠患者」!成功率達 98.5%


Nature:語言天才比數學高手更適合學 Python!別在嘴文科生、女性不能寫程式了


Google 正測試人工智慧系統,助盲人和視障人士獨立參加路跑


連蛋白質折疊奧秘也能破解?!到底什麼是人工智慧辦不到?!(上)


科技時代,連另一半都可以人工智慧幫你做決定?!


人工智慧當起小當家?!備料到上菜完全一手包!!

榮登前十個神級好用的Python函式庫,你知道幾個?(3)

榮登前十個神級好用的Python函式庫,你知道幾個?(3)
榮登前十個神級好用的Python函式庫,你知道幾個?(3)

是哪10個Python函式庫榮登去年最好用?”這些”函式庫你都知道嗎?(3)

本系列文章為【2020年度十大Python函式庫-人工智慧 · 機器學習必備 】的第三篇。上一篇介紹了美化了 Python 錯誤信息的「Pretty Errors」,堪稱是療癒系的工程師的 debug 神器、還有「Diagrams」讓工程師不需要使用設計軟體,只要使用 Python 就能畫出美輪美奐的雲系統架構圖。請點此看上一篇閱讀了解 。

HydraOmegaConf:結構化複雜的機器學習項目

在機器學習項目中做研究與實驗時,總是有五花八門的環境配置工作。在這些非平凡(non-trivial)的應用程式中,配置管理也有可能會變得複雜。是否有結構化的方法來處理這種複雜性?

Hydra 可以藉由「組合」的方式來建構配置,並從命令列或 config 設定檔中覆蓋某些特定的部分,而加快了執行速度。

為了要說明 Hydra 函式庫可簡化一些特定的任務,tryolabs 舉了他們正在試驗的模型的基本架構以及它的多種變化為例。利用 Hydra,可以定義基本配置,然後運行多個工作並對其進行變化:

Hydra 的表親「OmegaConf」為分層配置系統的基礎提供了一致的 API,並支援不同的來源如 YAML、config 設定檔、物件與 CLI 參數。

PyTorch Lightning:PyTorch 版的 Keras,告別沒完沒了的 Debug

PyTorch 是一款熱門的的深度學習框架,可以用簡單的方式建構複雜的 AI 模型。但是當作大量實驗的時候,很多東西都會變得複雜過頭,代碼也隨之變得龐大,此時還是容易出錯。

於是,PyTorch Lightning 就是為了減少錯誤而誕生:它可以重構 PyTorch 代碼、抽出複雜重複的部分,讓工程師可以更專注於核心的建構、實驗也更快更便捷地開展迭代。

 

 

▲ PyTorch Lightning 可以重構 PyTorch 代碼、抽出複雜重複的部分,讓工程師可以更專注在研究代碼上

 

Lighting 的原理是藉由將研究代碼從重複性強的工程代碼區分開,讓工程師可以專注在研究代碼上,思緒就會更加清晰,整體代碼也更加簡潔清晰。

Hummingbird

並非所有的機器學習都是深度學習。通常,你的模型是由更多傳統的演算法在 Python 的機器學習套件 scikit-learn(像是 Random Forest)中組成;或者你也可以選擇時下流行的 LightGBM和 與 XGBoost 的梯度提升技術 (Gradient boosting)演算法。

然而,機器學習領域一直都在進步。像是上述的 PyTorch 框架正以令人屏息的速度在進步,硬體設備也不斷優化,以更低的耗能、更快的速度完成張量計算。假如我們能將這些優勢套用到傳統的演算法中,不是很好嗎?因此 Microsoft 就發布了新的 Python 函式庫「Hummimgbird」。

Hummingbird 可以將已經訓練好的傳統機器學習模型,編譯至張量計算。這個強大的功能讓你根本不用再設計新的模型!

截至目前為止,Hummingbird 支援轉換到 PyTorch、TorchScript、ONNX 與以及多種機器學習模型以及向量器。其實這跟上述提到的 scikit-learn(Sklearn)非常相似,讓你重複使用現有的代碼,但可將成品變成由 Hummingbird 生成的代碼。

 

下篇,我們即將介紹「Scalene」:用於 Python 腳本的 CPU 和記憶體的效能分析器(profiler),能完整地處理多執行緒代碼並區分運行 Python 和本機代碼所花費的時間,還有用於影像即時追蹤(real-time object tracking)的 「Norfair」,能及時抓住正在移動的人、事、物並賦予獨一無二的 ID。請點此看下一篇閱讀了解!

 

 

 

 

推薦文章:
人工智慧能「聽咳嗽聲認出新冠患者」!成功率達 98.5%


用說的就能寫程式!人工智慧替手傷工程師開發語音程式工具


Google 正測試人工智慧系統,助盲人和視障人士獨立參加路跑


Nature:語言天才比數學高手更適合學 Python!別在嘴文科生、女性不能寫程式了


敗血症黃金搶救期就靠人工智慧即時預測!


偵測速度快又精準?中研院開發人工智慧YOLOv4辦到了!(上)


怪物不會畫免緊張!靠人工智慧幫你輕鬆塗鴉變大師級奇幻插畫!

榮登前十個神級好用的Python函式庫,你知道幾個?(2)

榮登前十個神級好用的Python函式庫,你知道幾個?(2)
榮登前十個神級好用的Python函式庫,你知道幾個?(2)

是哪10個Python函式庫榮登去年最好用?”這些”函式庫你都知道嗎?(2)

本系列文章為【2020年度十大Python函式庫-人工智慧 · 機器學習必備 】的第二篇。上一篇介紹了把單調的「命令列介面」變花俏的 Python 函式庫:Typer、Rich 與 PyGui,除了可把命令列/終端機介面變彩色外,還可以加入表情符號與特效等。請點此看上一篇閱讀了解 。

PrettyErrors:將 Python 醜陋的 bug 信息變漂亮

Python已經算是十分言簡意賅的程式語言了,但是當有 bug 時,它的錯誤信息輸出(參見下圖左側)也是一樣會讓你懷疑人生!密密麻麻的代碼,讓你必須在毫無頭緒之下進行地毯式搜索!

▲PrettyErrors 函式庫將原本混亂的 Python 錯誤信息(箭頭左邊所示)重新排版得井然有序、顏色與段落都很分明(箭頭右邊所示)

 

經過 PrettyErrors 的重新排版,所有醜陋的錯誤信息都能變的井然有序,最後你得到的是經過排版美化、整齊劃一的 bug 報告,如上圖的右側所示。

Diagrams:只用 Python 就能繪製雲系統架構

程式設計師除了 coding 與 debug 外,有時還必須和其他的同事解釋錯綜復雜的架構。傳統上,我們會使用圖像介面(GUI) 工具來處理圖表、將其可視化後放入簡報、文件等,但是這並非唯一的方法。

Diagrams 可以讓你在沒有任何設計工具的狀況下,僅僅使用 Python 程式碼就能夠繪製出雲系統架構!它有現成的圖標,讓你能馬上對應AWS、Azure、GCP 等多個不同的雲端供應商,使得繪製箭頭、創建群組等都輕而易舉!只需幾行代碼就可以辦到!

▲ Diagram 函式庫能讓工程師僅僅使用 Python 代碼
就能繪製雲系統架構圖

 

下篇,我們即將介紹 PyTorch 版的 Keras「PyTorch Lightening」讓你告別沒完沒了的 Debug!另外還有微軟出的 Hummingbird 讓你不用重新設計新模型;另外還有可以將高維度資料視覺化的「HiPlot」,點此看下一篇閱讀了解!

 

 

 

推薦文章:
用說的就能寫程式!人工智慧替手傷工程師開發語音程式工具


Google 正測試人工智慧系統,助盲人和視障人士獨立參加路跑


人工智慧能「聽咳嗽聲認出新冠患者」!成功率達 98.5%


Nature:語言天才比數學高手更適合學 Python!別在嘴文科生、女性不能寫程式了


科幻迷的最愛電影竟然和Python跟Java扯上關係?!(上)


蛋白質折疊背後的秘密竟被人工智慧輕易破解?!(上)


人工智慧面試官,打破求職歧視環境!!(上)

榮登前十個神級好用的Python函式庫,你知道幾個?(1)

榮登前十個神級好用的Python函式庫,你知道幾個?(1)
榮登前十個神級好用的Python函式庫,你知道幾個?(1)

是哪10個Python函式庫榮登去年最好用?”這些”函式庫你都知道嗎?(1)

國外的機器學習與資料科學顧問公司「Tyrolabs」每年底都會選出年度十大最強 Python 函式庫。去年(2020)年尾不例外。

根據 Tyrolabs 提出的免責聲明,2020 年他們在精選出 10 大函式庫時,在很大程度上是受到機器學習與數據科學的影響——儘管其中有幾個確實對「非」數據科學的人士非常有用。

因此,除了 10 個入選的 Python 函式庫之外,他們決定在從遺珠之憾中,挑出幾個他們覺得同樣重要的數據庫,列入「榮譽表揚(Honorable mentions)」的部分。

以下為入選的十大 Python 函式庫:

Typer:讓命令列介面更好編輯

雖然你並不總是需要編寫沒有圖像、滿滿文字的 CLI(命令列介面)應用程式,但是一但遇到了,一定會十分希望能速戰速決、無後顧之憂。FastAPI 的創作者「tiangolo」繼之前的 FastAPI 框架取得巨大的成功後,使用了相同的原理創作了新的函式庫 「Typer」,使你可以借力於 3.6 以上版本的 Python 才有的「類型提示(Type Hinting)」功能來編寫命令行介面。

這樣的設計讓 Typer 脫穎而出。藉由「類型提示(Type Hinting)」功能,您可以在 Python 編輯器(如 VSCode)中享有「自動完成」功能,這將大大提高您的工作效率;除了能確保所寫的程式碼是否完整被紀錄之外,你也可以花最少的力氣寫出純文字的 CLI 命令列介面的應用程式。

▲ Typer 賦予 Python 編輯器(圖中為 VSCode)「自動完成」的功能,能有效提升寫程式的效率。(圖:FastAPI)

 

為了增強其功能,Typer 被建立在知名的「命令列神器」Click 之上。這意味著 Typer 可以充分利用 Click 既有的所有優點、社群與插件,使用更簡潔的樣版代碼,並依據所需,進行更複雜的工作。

Rich:讓命令列介面從黑白變彩色

依循命令行介面 CLI 的主題,誰說終端應用程式必須是單色的白色、或是駭客電影中常見的黑色、綠色呢?太無聊了!

身為 Python 工程師的你,是否會想再終端輸出時添加色彩與樣式,就像是在打印複雜的表格時加入心跳特效、毫不費力地展示漂亮的進度條、markdown 或是表情符號?Rich 函式庫可以實現上述特效,如以下所示:

▲ Rich 函式庫能讓單色的命令列介面(CLI)變彩色,還能有多種視覺特效、表情符號等。

 

無庸置疑的,Rich 可讓命令列字元的應用程式,外觀換然一新,給人的視覺上體驗。

Dear PyGui:賦予終端機程式真正的圖像化介面

藉由 Rich 函式庫,終端應用程式變漂亮了,但是有時這樣的美化還不夠,你甚至會需要一個新的 GUI 圖形介面。此時你需要 Dear PyGui——一款 Dear ImGui C++ 計畫的 Python 接口。

Dear PyGui 使用了在電玩中最常使用的即時模式(immediate mode),這代表著動態 GUI 是一個影格(frame)接著另一個影格獨立繪製的,不需保留任何資料。這使得「Dear PyGui」與其他 Python GUI 框架有所區別。它不僅具有高性能,而且使用電腦的 GPU 來促成高度動態界面的構建,這在工程、模擬、遊戲及資料科學的應用程式可說是經常被需要的。

 

▲ Dear PyGui 套用了電玩常用的即時模式,能賦予終端機程式真正的圖像化介面

 

本篇介紹均為把單調的「命令列介面」變漂亮的 Python 函式庫。若 Python 的錯誤信息也能這樣美化的話,工程師在 debug 時就不會這麼痛苦了!沒錯,「PrettyErrors」就是為這一目的而生。請點此看下一篇,閱讀了解!另外還有只用 Python 就能繪製雲系統架構的「Diagrams」、還有可將複雜的機器學習項目「結構化」的「Hydra 與 OmegaConf」,請不要錯過!

 

 

 

 

 

推薦文章:
人工智慧能「聽咳嗽聲認出新冠患者」!成功率達 98.5%


用說的就能寫程式!人工智慧替手傷工程師開發語音程式工具


Google 正測試人工智慧系統,助盲人和視障人士獨立參加路跑


Nature:語言天才比數學高手更適合學 Python!別在嘴文科生、女性不能寫程式了


人工智慧當起媒人婆?!讓你不再寂寞空虛冷!


蛋白質折疊背後的秘密竟被人工智慧輕易破解?!(上)


最夯程式語言Python和Java竟也跑進科幻電影?(上)