標籤:

PaddlePaddle系列之三行代碼從入門到精通

作者 | 金天

編輯 | Vincent

AI前線出品| ID:ai-front

AI 前線導語:「作者本人說,這將是 PaddlePaddle 系列教程的開篇,屬於非官方教程。既然是非官方,自然會從一個使用者的角度出發,來教大家怎麼用,會有哪些坑,以及如何上手並用到實際項目中去」。

本文首發在作者 GitHub:jinfagang.github.io ,現由作者授權,AI 前線整理髮布。

三行代碼 PaddlePaddle 從入門到精通

PaddlePaddle 是百度大力推出的一個框架,不得不說相比於 tensorflow,PaddlePaddle 會簡單很多,接下來我會細說。同時百度在人工智慧方面的功底還是非常深厚,我曾經在騰訊實習,類似於 AT 這樣的公司,甚至沒有一個非常成型的框架存在。

既然是三行代碼精通 PaddlePaddle,那麼得安裝一下 PaddlePaddle。就目前來說,最好的辦法是 build from source。步驟如下 (注意,這裡是 CPU 版本,GPU 版本的源碼編譯過程後續補充,我們先用 CPU 來熟悉 API):

好了,看上去應該算是安裝完了。接下來我們用三行代碼來測試一下?

PaddlePaddle 在 python API 上 0.10 有較大的變化,所以直接 import 一下 v2 版本的 API。如果可以說明 PaddlePaddle 安裝沒有問題。這裡贊一下百度的技術功底和用戶體驗,這尼瑪要是 caffe 或者 caffe2 編譯出錯概率 100% 不說,python 安裝了也不能 import,PaddlePaddle 一步到位,非常牛逼。

閑話不多說,直接三行代碼來熟悉一下 PaddlePaddle 的 API。

三行代碼來了

接下來要做的事情是,用 PaddlePaddle 搭建一個 3 層 MLP 網路,跑一個二維的 numpy 隨機數據,來了解一下 PaddlePaddle 從數據喂入到訓練的整個 pipeline 吧。

首先我們這個教程先給大家展示一個圖片分類器,用到的數據集是 Stanford Dogs 數據集, 下載鏈接, 大概 800M, 同時下載一下 annotations, 大概 21M。下載好了我們用一個 paddle_test 的文件夾來做這個教程吧。

把所有的 images 和 annotations 扔到 data 裡面去,解壓一下:

順便說一下,這裡的 annotations 是為後面用 paddlepaddle 做分割做準備,本次分類任務,只需要一個 images.tar 就可以了,所有圖片被放在了該類別的文件夾下面,以後處理其他分類任務時,只需要把不同類別放在文件夾就 OK 了,甚至不用改代碼,非常方便,這比 MXNet 要有道理很多,多數情況下我們根本不需要海量圖片訓練,也沒有必要搞個什麼 imrecord 的數據格式,MXNet 導入圖片真心蛋疼,沒有 Pytorch 方便,但是 Pytorch 得運行速度堪憂。

OK,將 images.tar 解壓,會得到 120 個文件夾,也就是 120 個類別,每個類別裡面都是一種狗狗圖片。

我們現在要來處理一下這些蠢狗。

開始寫三行代碼

好了,開始寫三行代碼了.

實際上 PaddlePaddle 的使用也就是三行代碼的事情,首先是網路構建,這裡我們構建一個 VGG 網路,其次是 event 的處理函數,這個機制是 PaddlePaddle 獨有的,PaddlePaddle 把所有的訓練過程都包裝成了一個 trainer,然後調用這個 event_handler 來處理比如列印 loss 信息這樣的事情。OK,我們一步一步來,先來看一下 train 的過程把:

PaddlePaddle 的網路訓練流程分為幾個步驟:

  • 首先定義網路,這裡的網路不包括最後一層的 softmax;
  • 創建一個 cost,cost 當然就需要一個網路的輸出和 lable 了;
  • 通過這個 cost 來創建網路訓練的參數,非常簡單明了;
  • 最後是優化器,這裡定義反向傳播的正則項,學習速率調整策略等;
  • 通過上面這些創建一個 trainer;
  • 最後這個 trainer 要訓練起來,還需要持續的數據喂入,時間處理函數,和喂入的方式。

接著我們看一下網路定義和事件處理函數:

這裡我們先用 PaddlePaddle 內置的 cifar10 來測試一下能否訓練起來,把上面的代碼加上 import 之後:

在主函數裡面運行 train()。見證奇蹟的時刻到了。。

PaddlePaddle 開始下載數據,並列印出了網路結構!

so far so good,PaddlePaddle 開始訓練網路!!!

牛逼了我的哥。接下來我們用這個代碼來保存網路訓練之後的權重:

最後,模型 train 好之後,導入模型進行預測:

OK, 本次列車到此結束,對於 PaddlePaddle 如何訓練一個圖片分類器,應該有了一個清醒的認識,下一步,我們將繼續…. 用 PaddlePaddle 實現一個 NLP 情感分類器!

作者介紹

金天,清華大學在讀研究生,深度學習領域研究者;熱愛人工智慧,以及電子硬體製作,是要成為鋼鐵俠的男人;歐曼信息科技有限公司 CEO,業餘魔術師。


-全文完-

關注人工智慧的落地實踐,與企業一起探尋 AI 的邊界,AICon 全球人工智慧技術大會火熱售票中,8 折倒計時一周搶票,詳情點擊:

t.cn/Rl2MftP

《深入淺出TensorFlow》迷你書現已發布,關注公眾號「AI前線」,ID:ai-front,回復關鍵字:TF,獲取下載鏈接!


推薦閱讀:

TAG:精通 |