国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

使用 C++ 部署深度學(xué)習(xí)模型快速上手方案

2022-11-14 16:54 作者:曠視天元MegEngine  | 我要投稿

本文將從獲取一個(gè)訓(xùn)練好的?shufflenet_v2?模型出發(fā), 講解如何使用 MegEngine Lite 的 C++ 接口將其部署到 CPU(Linux x86 / Android Arm)環(huán)境下運(yùn)行。主要分為以下小節(jié):

  • 導(dǎo)出已經(jīng)訓(xùn)練好的模型

  • 編寫 Inference 代碼

  • 編譯 MegEngine Lite

  • 編譯 Inference 代碼

  • 執(zhí)行 Inference 文件,驗(yàn)證結(jié)果

參見:

MegEngine Lite 還可以?通過 Python 接口進(jìn)行使用, 使用方便但有局限性。

導(dǎo)出已經(jīng)訓(xùn)練好的模型

請參考?獲得用于 MegEngine Lite 推理的模型。

編寫 Inference 代碼

首先創(chuàng)建一個(gè)?main.cpp, 在這個(gè)文件中將直接調(diào)用 MegEngine Lite 的接口運(yùn)行?shufflenet_v2.mge?模型, 輸入數(shù)據(jù)?input_tensor?是隨機(jī)生成的,所以不用在乎計(jì)算結(jié)果。

上面代碼主要完成了幾個(gè)步驟,包括:

  1. 創(chuàng)建默認(rèn)配置的 Network;

  2. 載入模型,MegEngine Lite 將讀取并解析模型文件,并創(chuàng)建計(jì)算圖;

  3. 通過輸入 Tensor 的名字獲取模型的輸入 Tensor, 并設(shè)置隨機(jī)數(shù)作為輸入數(shù)據(jù);

  4. 執(zhí)行 Inference 邏輯;

  5. 獲取模型輸出 Tensor, 并處理輸出數(shù)據(jù)。

至此完成了一個(gè)?shufflenet_v2?模型的推理過程的 C++ 代碼編寫。

但在真正運(yùn)行這段代碼之前,還需要編譯該 C++ 源文件,并鏈接 MegEngine Lite 庫文件。 ?? ?? ??

編譯 MegEngine Lite

注解

  • 這一步的目的是獲得 MegEngine Lite 的靜態(tài)鏈接庫和動(dòng)態(tài)鏈接庫,供我們上面代碼編譯時(shí)候進(jìn)行鏈接; 編譯的過程和?從源碼編譯 MegEngine?中的介紹是一致的。

  • 下面將演示在 Linux x86 下使用動(dòng)態(tài)鏈接,Android Arm 上使用靜態(tài)鏈接的流程:

1、首先需要 Clone 整個(gè) MegEngine 工程,并進(jìn)入到 MegEngine 的根目錄:

2、環(huán)境準(zhǔn)備 & 執(zhí)行編譯:

Linux x86

準(zhǔn)備編譯依賴的子模塊:

安裝英特爾數(shù)學(xué)核心庫(MKL):

本機(jī)編譯 MegEngine Lite:

Android Arm

準(zhǔn)備編譯依賴的子模塊:

從安卓?官網(wǎng)?下載 NDK 并解壓到某路徑, 并將改路徑設(shè)置為?NDK_ROOT?環(huán)境變量:

交叉編譯 MegEngine Lite:

編譯完成之后 MegEngine Lite 庫和頭文件路徑 /path/to/megenginelite-lib

  • Linux x86:?build_dir/host/MGE_WITH_CUDA_OFF/MGE_INFERENCE_ONLY_ON/Release/install/lite/

  • Android Arm:?build_dir/android/arm64-v8a/Release/install/lite/

編譯 Inference 代碼

有了上一步得到的 MegEngine Lite 庫文件,我們就可以在編譯 Inference 代碼的時(shí)候進(jìn)行動(dòng)態(tài)鏈接或靜態(tài)鏈接。 下面分別用 Linux x86 和 Android Arm 來展示兩種鏈接方式,演示編譯 Inference 代碼的步驟:

Linux x86 動(dòng)態(tài)鏈接編譯

根據(jù)自身環(huán)境選擇編譯器(這里使用的是 clang++, 也可以用 g++),動(dòng)態(tài)鏈接?liblite_shared.so?文件:

export LITE_INSTALL_DIR=/path/to/megenginelite-lib #上一步中編譯生成的庫文件安裝路徑

編譯完成之后,就得到了可執(zhí)行文件?demo_deploy.

Android Arm 靜態(tài)鏈接編譯

Android Arm 編譯為交叉編譯(在 Linux 主機(jī)上編譯 Android Arm 中運(yùn)行的可執(zhí)行程序)。

以鏈接 MegEngine Lite 的靜態(tài)庫作為示例,需要確保 NDK 環(huán)境準(zhǔn)備完成,

編譯完成之后,需要將?demo_deploy?和模型文件?shufflenet_v2.mge?拷貝到 Android Arm 機(jī)器上。

執(zhí)行 Inference 文件,驗(yàn)證結(jié)果

最后執(zhí)行編譯好的文件,就可以看到推理結(jié)果:

這樣就快速完成了 X86 和 Arm 上簡單的 demo 部署。

在本例中,最后計(jì)算結(jié)果可以看到:經(jīng)過?softmax?之后,輸出的結(jié)果中?sum = 1, 符合?softmax?的輸出特點(diǎn)。

GitHub:MegEngine 曠視天元?(歡迎 star~
https://github.com/MegEngine

Gitee:MegEngine/MegEngine
https://gitee.com/MegEngine/MegEngine

MegEngine 官網(wǎng):MegEngine-深度學(xué)習(xí),簡單開發(fā)

https://www.megengine.org.cn/

歡迎加入 MegEngine 技術(shù)交流 QQ 群:1029741705


使用 C++ 部署深度學(xué)習(xí)模型快速上手方案的評(píng)論 (共 條)

分享到微博請遵守國家法律
丹凤县| 庄河市| 吐鲁番市| 丹东市| 调兵山市| 靖安县| 富阳市| 托克托县| 沙田区| 定结县| 遵义县| 津市市| 福建省| 沿河| 钟山县| 明光市| 临城县| 桃园县| 老河口市| 乌兰浩特市| 山丹县| 福建省| 开封县| 西贡区| 砀山县| 胶州市| 开化县| 襄城县| 海原县| 安庆市| 云南省| 晋城| 上饶市| 措美县| 山西省| 开封市| 汉源县| 屏东市| 景泰县| 崇文区| 休宁县|