「最全」實至名歸,NumPy 官方早有中文教程,結合深度學習

機器之心報道

參與:一鳴、Jamin

NumPy 無疑是很多機器學習研究者和開發者的「白月光」。如此優秀的項目,沒有中文版怎麼行?近日,機器之心發現 NumPy 官方早在去年就已出了一箇中文版網站,涵蓋 NumPy 的一切。


「最全」實至名歸,NumPy 官方早有中文教程,結合深度學習


在 Github 上一度蟬聯最流行的機器學習和數據科學包 NumPy,已經有了非常之系統的中文文檔,回想起當初細啃 NumPy 之時,不少人不得不徘徊於各大搜索引擎及平臺反覆查找,找到的文檔也許還很不繫統。現在,如果有什麼和 NumPy 的問題,只需要瀏覽這份官方中文文檔就足夠了。它足夠的系統、全面且親民。親民到什麼程度呢?網站還獨一份的配備了「防脫髮指南」。

NumPy 是什麼?它是大名鼎鼎的,使用 Python 進行科學計算的基礎軟件包,是 Python 生態系統中數據分析、機器學習、科學計算的主力軍,極大簡化了向量與矩陣的操作處理。除了計算外,它還包括了:

  • 功能強大的 N 維數組對象。
  • 精密廣播功能函數。
  • 集成 C/C+和 Fortran 代碼的工具。
  • 強大的線性代數、傅立葉變換和隨機數功能

此次中文文檔還強調了它兩大特性:Ndarray 以及切片和索引,這兩部分所涉及的功能在日常操作中是十分常見的。

  • Ndarray:一系列同類型數據的集合,以 0 下標為開始進行集合中元素的索引。ndarray 對象是用於存放同類型元素的多維數組。ndarray 中的每個元素在內存中都有相同存儲大小的區域。
  • 切片和索引:ndarray 對象的內容可以通過索引或切片來訪問和修改,與 Python 中 list 的切片操作一樣。ndarray 數組可以基於 0 - n 的下標進行索引,切片對象可以通過內置的 slice 函數,並設置 start, stop 及 step 參數進行,從原數組中切割出一個新數組。

官網地址:https://www.NumPy.org.cn

這個官方中文項目內容繁多,文章數量龐大。機器之心在這裡節選了一些亮點內容,供讀者參考。

教程、文檔應有盡有,中文版強調和深度學習聯繫

從原理開始,中文版增加理論介紹板塊

這個開源的官方中文版教程可以說是非常全面了。它從最基本的理解 NumPy 開始,教程層層推進,直到讓用戶掌握進階的使用方法。

從內容來看,中文版不僅僅是官方英文版本的翻譯,還額外增加了「文章」這一欄目。該欄目提供了對 NumPy 背後的矩陣運算原理的詳細解釋,使得使用者「知其然,也知其所以然」。這是英文版教程中沒有的。

以下為這一部分的目錄,從這裡可以看到,這部分內容主要介紹 NumPy 的基本理論,以及涉及到其應用的理論部分,如數據分析、神經網絡實現,以及在其他代碼庫中的接口等。

基礎篇

  • 理解 NumPy
  • NumPy 簡單入門教程
  • Python NumPy 教程
  • 創建 NumPy 數組的不同方式
  • NumPy 中的矩陣和向量

進階篇

  • NumPy 數據分析練習
  • NumPy 神經網絡
  • 使用 NumPy 進行數組編程
  • NumPy 實現k均值聚類算法
  • NumPy 實現DNC、RNN和LSTM神經網絡算法

其他篇

  • OpenCV中的圖像的基本操作
  • MinPy:MXNet後端的NumPy接口

我們截取了這些文章的部分內容,可以看到,這裡不僅僅會講 NumPy 所實現的功能,還提供了原理的圖解。

「最全」實至名歸,NumPy 官方早有中文教程,結合深度學習

對於多維數組的直觀講解(部分),可以看出官方提供了很好的理論解釋和圖示。

注意和深度學習的聯繫

另一方面,NumPy 中文版教程注意到了深度學習近來的發展趨勢,因此推出了結合 NumPy 和百度飛槳框架的深度學習教程。可以說,NumPy 不僅僅只是科學計算工具了,而是深度學習社區的重要組成部分。

如下為這一部分的內容,可以看到,神經網絡相關的所有內容,包括原理和相關實現都涵蓋到了。在這部分還有一個 7 日的深度學習入門課程,供小白用戶參考。

深度學習基礎教程

  • 前言
  • 線性迴歸
  • 數字識別
  • 圖像分類
  • 詞向量
  • 個性化推薦
  • 情感分析
  • 語義角色標註
  • 機器翻譯
  • 生成對抗網絡

七日入門深度學習(正在更新)

  • Day 1:初識深度學習
  • Day 1:如何快速入門深度學習?
  • Day 2:圖像識別基礎與實戰
  • Day 3:目標檢測基礎與實踐(一)
  • Day 3:目標檢測實戰-RCNN算法講解
  • Day 3:目標檢測實戰-YOLOv3檢測物體

以如下代碼為例,這是一個線性迴歸神經網絡構建的代碼部分。可以看到,代碼使用 NumPy 進行加載和預處理,並使用飛槳構建數據分批等的相關函數。

<code>feature_names = [
    'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX',
    'PTRATIO', 'B', 'LSTAT', 'convert'
]
feature_num = len(feature_names)
data = np.fromfile(filename, sep=' ') # 從文件中讀取原始數據
data = data.reshape(data.shape[0] // feature_num, feature_num)
maximums, minimums, avgs = data.max(axis=0), data.min(axis=0), data.sum(axis=0)/data.shape[0]


for i in six.moves.range(feature_num-1):
   data[:, i] = (data[:, i] - avgs[i]) / (maximums[i] - minimums[i]) # six.moves可以兼容python2和python3

ratio = 0.8 # 訓練集和驗證集的劃分比例
offset = int(data.shape[0]*ratio)
train_data = data[:offset]
test_data = data[offset:]

def reader_creator(train_data):  
    def reader():  
        for d in train_data:  
            yield d[:-1], d[-1:]  
    return reader

train_reader = paddle.batch(
    paddle.reader.shuffle(
        reader_creator(train_data), buf_size=500),
        batch_size=BATCH_SIZE)

test_reader = paddle.batch(
    paddle.reader.shuffle(
        reader_creator(test_data), buf_size=500),
        batch_size=BATCH_SIZE)/<code>


用戶文檔和參考手冊:覆蓋 NumPy 的一切


當然,最核心的部分當然是 NumPy 本身的文檔了。中文版中對用戶的使用文檔和 NumPy 所有 API 都進行了翻譯和整理工作,基本上用戶需要的內容都可以在這裡找到。


用戶文檔目錄如下,這裡還貼心地提供了和「競品」Matlab 的比較,以及 NumPy 在 C 語言下的 API 使用方法。


  • NumPy 介紹
  • 快速入門教程
  • NumPy 基礎知識
  • 其他雜項
  • 與 Matlab 比較
  • 從源代碼構建
  • 使用 NumPy 的 C-API

從這裡可以看到,官方中文版真的是誠意滿滿。不僅提供原始文檔的翻譯,還加上了包括深度學習教程、其他來源的功能+原理解讀材料。對於剛上手 NumPy 的人來說,這就是最佳的學習教程。不管是自學也好,還是用於開發也好,都是極好的。

其他資源及文檔

如果讀到這裡你還不過癮?沒關係,官網還有相關配套的文章及視頻,讓你多樣化地保持新鮮感:

「最全」實至名歸,NumPy 官方早有中文教程,結合深度學習

另外,獨有一份的防脫髮指南讓你入坑之時再無後顧之憂:

「最全」實至名歸,NumPy 官方早有中文教程,結合深度學習


面向開發者還單獨有一份開發者指南,這是一份詳細的操作清單,如何合理的配置及使用開發環境等一系列問題都已被包含在內。

  • NumPy 行為準則
  • Git 教程
  • 設置和使用您的開發環境
  • 開發流程
  • NumPy 基準測試
  • NumPy C 風格指南
  • 發佈一個版本
  • NumPy 治理

NumPy 的用戶數量龐大,開發者社區也非常繁榮。從包括 PyTorch、NumPy 等開源工具陸續推出中文版文檔來看,中文世界在機器學習領域受到了更大的關注。


分享到:


相關文章: