機器之心報道
參與:一鳴、Jamin
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 不僅僅只是科學計算工具了,而是深度學習社區的重要組成部分。
如下為這一部分的內容,可以看到,神經網絡相關的所有內容,包括原理和相關實現都涵蓋到了。在這部分還有一個 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 行為準則
- Git 教程
- 設置和使用您的開發環境
- 開發流程
- NumPy 基準測試
- NumPy C 風格指南
- 發佈一個版本
- NumPy 治理
NumPy 的用戶數量龐大,開發者社區也非常繁榮。從包括 PyTorch、NumPy 等開源工具陸續推出中文版文檔來看,中文世界在機器學習領域受到了更大的關注。
閱讀更多 機器之心Pro 的文章