19行關鍵代碼,帶你輕鬆入門PaddlePaddle單機訓練

2021-02-14 Python遇見機器學習

  Python算法學習與機器學習算法報導  

編輯:Cookies

來源:AI科技大本營



剛接觸深度學習框架的同學可能會說

新入手一個框架是不是會很難?

NO,NO,NO

 

PaddlePaddle的宗旨就是「easy to use!

 

PaddlePaddle是百度自研的集深度學習框架、工具組件和服務平臺為一體的技術領先、功能完備的開源深度學習平臺,有全面的官方支持的工業級應用模型,涵蓋自然語言處理、計算機視覺、推薦引擎等多個領域,並開放多個領先的預訓練中文模型。

 

下面,就讓作者帶你

打開一扇深度學習的新大門

19行代碼入門PaddlePaddle單機訓練!

 

第1行

在Python環境下安裝PaddlePaddle框架,萬裡徵程開頭難,輸完這行指令,你已經成功了一大半!

第2-3行

進入代碼環境,導入數據包,沒啥可說的

import paddle as paddleimport paddle.fluid as fluid

第4-7行


定義模型,定義輸入輸出,輕鬆搞定

image = fluid.layers.data(name='image', shape=[1, 28, 28], dtype='float32') label = fluid.layers.data(name='label', shape=[1], dtype='int64') hidden = fluid.layers.fc(input=image, size=100, act='relu')prediction = fluid.layers.fc(input=hidden, size=10, act='softmax')


第8-10行

定義損失函數(交叉熵)和準確率函數

cost = fluid.layers.cross_entropy(input=prediction, label=label)avgcost = fluid.layers.mean(cost)acc = fluid.layers.accuracy(input=prediction, label=label)

第11-12行

定義優化方法,使用Adam算法進行優化,其實隨便什麼優化方法都可以,隨你喜歡啦

optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.001)  opts = optimizer.minimize(avg_cost)

第13-14行

在模型結構搭建完之後,我們需要對參數進行初始化。

註:我們這裡採用CPU單機單卡訓練,如果使用多GPU訓練,參數需要先在GPU0上初始化,再經由fluid.ParallelExecutor 分發到多張顯卡(詳細內容可以參考文末連結)

exe = fluid.Executor(fluid.CPUPlace())exe.run(fluid.default_startup_program())

第15-16行

準備輸入訓練數據,使用框架自帶MNIST數據集

train_reader = paddle.batch(paddle.dataset.mnist.train(), batch_size=128)feeder = fluid.DataFeeder(place=fluid.CPUPlace(), feed_list=[image, label])

第17-18行

啦啦啦,開始訓練,2行代碼輕鬆搞定

for batch_id, data in enumerate(train_reader()):train_cost,train_acc = exe.run(program=fluid.default_main_program(), feed=feeder.feed(data), fetch_list=[avg_cost, acc]) 

有興趣的同學也可以通過增加代碼print('Batch:%d, Cost:%0.5f, Accuracy:%0.5f' %(batch_id, train_cost[0], train_acc[0]))自行把訓練過程列印出來看一下

Batch:0, Cost:3.17834, Accuracy:0.04688Batch:50, Cost:0.53703, Accuracy:0.82031Batch:100, Cost:0.47778, Accuracy:0.83594Batch:150, Cost:0.34092, Accuracy:0.90625Batch:200, Cost:0.25703, Accuracy:0.92188Batch:250, Cost:0.37539, Accuracy:0.86719Batch:300, Cost:0.24384, Accuracy:0.94531Batch:350, Cost:0.51838, Accuracy:0.84375Batch:400, Cost:0.40187, Accuracy:0.85938Batch:450, Cost:0.36615, Accuracy:0.89062

第19行

訓練完成,保存模型,任務完成!

fluid.io.save_inference_model("model", ['image'], [prediction], exe)

好吧,看到這裡你說,

是19行代碼就完成單機訓練

沒錯,

但是完全沒感覺啊,

訓練好了該怎麼用呢?

不著急,我們試試拿一個實例

來測試一下!

預測實例

繼續導入2個基礎數據包,備用

import numpy as npimport pickle

加載預測數據,需要下載源項目文件

連結:https://pan.baidu.com/s/1axSjJ9XVTI7MYY25WpqZtg 

提取碼:rkhg 

對,我們需要對付的,

就是這樣歪歪扭扭的傢伙!

源項目中已經把圖片處理好了保存在bin文件裡面,可以直接讀取

load_file=open("save.bin","rb")img=pickle.load(load_file)act_label=pickle.load(load_file)load_file.close()

導入訓練好的模型,開始預測

with fluid.scope_guard(fluid.core.Scope()):    [infer_prog,feed_names,targets]=                fluid.io.load_inference_model("model", exe)    results = exe.run(program=infer_prog, feed={feed_names[0]: img}, fetch_list=targets)

列印輸出,搞定!

print("實際數字為: %d" % act_label)print("預測結果為: %d" % np.argsort(results)[0][0][-1]) 

最終結果

實際數字為: 3

預測結果為: 3

DuangDuangDuang!!

除去數據準備和列印輸出,

真正的核心預測代碼也只有3行而已,

驚不驚喜,意不意外?

是的,沒錯

PaddlePaddle就是這樣


一個易學易用的深度學習框架

你學會了麼?

 

相關焦點

  • PaddlePaddle升級解讀 | 十餘行代碼完成遷移學習,PaddleHub實戰篇
    開發者用使用僅僅十餘行的代碼,就能完成遷移學習。本文將為讀者全面介紹 PaddleHub 並其應用方法。命令行工具PaddleHub 借鑑了 Anaconda 和 PIP 等軟體包管理的理念,開發了命令行工具,可以方便快捷的完成模型的搜索、下載、安裝、預測等功能,對應的關鍵的命令分別是 search,download,install,run 等。我們以 run 命令為例,介紹如何通過命令行工具進行預測。
  • 專欄 | 新手入門?一步一步教你如何安裝PaddlePaddle
    使用 pip 安裝如果你還沒有在 pip 命令的話,首先要安裝 pip,要確保安裝的 pip 版本是大於 9.0.0 的,否則可能無法安裝 paddlepaddle。我們的硬體環境都有很大的不同,官方給出的 pip 安裝包不一定是符合我們的需求,比如筆者的電腦是不支持 AVX 指令集的,在官方中沒找到這個的安裝包(也行現在已經有了),所以我們要根據自己的需求來打包一個自己的安裝包。
  • PaddleWeekly | Wechaty社區大使帶你玩轉專屬微信Bot
    Wechaty社區大使Valerie使用飛槳PaddlePaddle帶你輕鬆賦能AI Bot!AgentMaker小組再度創新PPIM,頂會Backbone也能輕鬆完成語義分割。動漫化不止於圖像,多種風格視頻AnimeVlog也能如此簡單。
  • 【深度學習系列】PaddlePaddle之手寫數字識別
    博客專欄:https://www.cnblogs.com/charlotte77/前文傳送門:【好書推薦&學習階段】三個月教你從零入門深度學習上周在搜索關於深度學習分布式運行方式的資料時,無意間搜到了paddlepaddle,發現這個框架的分布式訓練方案做的還挺不錯的,想跟大家分享一下。
  • PaddlePaddle發布基於Docker的AI系統開發流程
    大家可以把自己基於PaddlePaddle開發的應用發布出來,便於用戶在單機和Kubernetes機群上運行。GPU/AVX paddle:0.10.0rc2-gpuGPU/no-AVX paddle:0.10.0rc2-gpu-noavxno-GPU/AVX paddle:0.10.0rc2no-GPU/no-AVX paddle:0.10.0rc2-noavx其中GPU版本鏡像由於包含CUDA driver,體積會略大於純CPU版本的鏡像
  • 一文帶你看懂PaddleHub
    是否支持命令行運行目前 PyTorch Hub 不支持命令行運行,但 PaddleHub 支持,命令行運行就是指我們安裝 PaddleHub 後,可以無需進入 Python 環境,即可快速體驗 PaddleHub 無需代碼、一鍵預測的命令行功能。
  • PaddlePaddle重磅升級,Paddle Fluid v1.4版本發布
    GPU多機多卡同步訓練通過增加稀疏通信能力提升帶寬不敏感訓練能力,在低配網絡帶寬網絡環境下,例如10G網絡下,同步訓練可提速10倍。更好支持K8S生態,提供工業生產環境下的Paddle-K8S-Operator支持;Kubeflow支持paddle-job。
  • 教程 | 如何用百度深度學習框架PaddlePaddle做數據預處理
    本文作者胡曉曼是一名高級算法工程師,熱衷寫通俗易懂的深度學習入門文章。流程簡單,而且只需要使用一行代碼即可實現整個過程。,用 reader decorator 組合起來,shuffle 後放入模型裡跑就行了。
  • PaddlePaddle深度學習開源平臺 :等待眾人划槳的中國AI大船
    commits(代碼更新次數)有 10073,也就每天更新幾十次吧。以及 90 個 contributors(代碼貢獻者)。/docs/develop/models/README.cn.html如果說前面還是入門級的教程,那麼這裡的模型庫其實擔綱的角色是解決(很大程度上)工業級的實際問題,這也是我特別關注的。
  • 三分鐘帶你弄懂Paddle Hub!  
    一行代碼調用最潮模型",在我們調參圈簡直震驚了!要是所有模型都能一行命令解決,我也不用一天到晚當調參這麼苦兮兮T_T。不過我突然想起,上個月我還用過PaddleHub做Fine-tune,很好用,咋沒人推薦呢?好用的東西當然要跟大家分享,所以我做了一個非官方測評,三分鐘帶大家了解PaddleHub!
  • PaddleDetection目標檢測套件
    軟硬體環境簡介引用官方的項目介紹PaddleDetection飛槳目標檢測開發套件,旨在幫助開發者更快更好地完成檢測模型的組建、訓練、優化及部署等全開發流程。ppdetection) xugaoxiang@1070Ti:~/Works/github/PaddleDetection-release-0.5$ ipythonPython 3.7.9 (default, Aug 31 2020, 12:42:55)Type 'copyright', 'credits' or 'license' for more informationIPython 7.19.0
  • 【深度學習系列】用PaddlePaddle和Tensorflow進行圖像分類
    =2,        pool_stride=2,        act=paddle.activation.Relu())    fc = paddle.layer.fc(        input=conv_pool_2, size=512, act=paddle.activation.Softmax())2.訓練程序:
  • Paddle.js & PaddleClas 實戰 ——『尋物大作戰』AI 小遊戲
    雖然受限於數據,它目前還是一款初級階段的遊戲,不過麻雀雖小,五臟俱全,整體開發過程囊括了 數據處理、模型設計、模型訓練、上線部署 ,四位一體的全部流程!構建神經網絡/深度學習模型的基本步驟PaddleClas 作為「開箱即用」的圖像分類套件,擁有 180+ 預訓練模型,都只需經過簡單配置,即可完成從訓練到部署的全流程工作
  • PaddlePaddle實戰 | 情感分析算法從原理到實戰全解
    今天是5月20日,PaddlePaddle教你用情感分析算法體會女神心意。在下文中,我們將以情感分析為例,介紹使用深度學習的方法進行端對端的短文本分類,並使用PaddlePaddle完成全部相關實驗。分別表示輸入門,遺忘門,記憶單元及輸出門的向量值,帶角標的W及b為模型參數,tanh為雙曲正切函數,⊙表示逐元素(elementwise)的乘法操作。
  • 手把手教你PaddlePaddle 做詞向量模型 SkipGram實戰
    從上面這個例子可以看出,使用向量數值表示法最關鍵的地方在於如何獲取詞彙的 向量的表示,而 SkipGram 就是一個良方。2、什麼是語言模型詞向量一般不是直接獲取的,而是某些任務的副產品。它們通常是隨機初始化的, 然後通過不斷的數值優化過程中獲得語義信息,例如上述的相似性。
  • 在Node.js上接入Paddle Lite,讓你的網站具備AI推理能力
    隨著桌面端Electron技術逐步崛起,基於Electron開發的代碼編輯器、聊天軟體、遊戲等層出不窮。對於習慣使用Node.js進行後端開發的朋友來說,開發一套漂亮的桌面UI客戶端還是有一定難度的;而Electron開發不要太簡單,只要會寫HTML,就能寫客戶端,剩下的交給時間慢慢打磨即可。
  • 飛槳萬能轉換小工具X2Paddle,教你玩轉模型遷移
    但是從代碼的轉移談何容易,之前的工作重寫一遍不太現實,成千上萬行代碼的手工轉換等於是在做一次二次開發。現在,有個好消息:無論Caffe、TensorFlow、ONNX都可以輕鬆遷移到飛槳平臺上。雖然目前還不直接遷移PyTorch模型,但PyTorch本身支持導出為ONNX模型,等於間接對該平臺提供了支持。然而,有人還對存在疑惑:不同框架之間的API有沒有差異?
  • 十行代碼就能搞定深度學習?飛槳框架高層API,一起輕鬆玩轉AI
    、模型評估、模型保存等場景,高層 API 均可以通過 1~3 行代碼實現。相比傳統方法動輒幾十行的代碼量,高層 API 只需要十來行代碼,就能輕鬆完成一個 MNIST 分類器的實現。以極少的代碼就能達到與基礎 API 同樣的效果,大幅降低了深度學習的學習門檻。如果是初次學習深度學習框架,使用飛槳高層 API,可以「凡爾賽」說出「好煩哦,飛槳高層 API 怎麼這麼快就完成開發了,我還想多寫幾行代碼呢!」
  • PaddleNLP:工業級中文NLP開源工具集
    PaddleNLP將自然語言處理領域的多種模型用一套共享骨架代碼實現,可大大減少開發者在開發過程中的重複工作。工具集擁有當前業內效果最好的中⽂語義表示模型和基於用戶大數據訓練的應用任務模型,模型源於產業實踐,達到工業級的應用效果。PaddleNLP完全基於PaddlePaddle (www.paddlepaddle.org)開發。
  • 基於PaddlePaddle的詞向量實戰 | 深度學習基礎任務教程系列(二)
    項目地址:http://paddlepaddle.org/documentation/docs/zh/1.3/beginners_guide/basics/word2vec/index.html基於PaddlePaddle訓練一個詞向量模型操作詳情請參照Github:https://github.com/PaddlePaddle/book/blob