樹莓派安裝paddlelite; x86電腦上安裝paddlehub,並將paddlehub中的預訓練模型轉換爲paddlelite格式,使之能在樹莓派上運行。python
樹莓派編譯安裝paddlelite
sudo apt install patchelf cmake sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150 git clone https://github.com/PaddlePaddle/Paddle-Lite.git cd Paddle-Lite sudo ./lite/tools/build.sh \ --build_extra=ON \ --arm_os=armlinux \ --arm_abi=armv7hf \ --arm_lang=gcc \ --build_python=ON \ full_publish cd build.lite.armlinux.armv7hf.gcc/inference_lite_lib.armlinux.armv7hf/python/install sudo python3 setup.py install
具體源碼編譯時的參數說明,你們可參考:https://paddlepaddle.github.io/Paddle-Lite/v2.2.0/source_compile/#本地編譯直接在rk3399或樹莓派上編譯linux
x86電腦上將paddlehub的預訓練模型轉爲paddlelite格式
安裝paddlehub、paddlepaddle
python -m pip install paddlehub python -m pip install paddlepaddle
測試paddlehub預訓練模型
import paddlehub as hub senta = hub.Module(name="senta_gru") test_text = ["這家餐廳很好吃", "這部電影真的不好勁"] results = senta.sentiment_classify(texts=test_text, use_gpu=False, batch_size=1) for result in results: print(result['text']) print(result['sentiment_label']) print(result['sentiment_key']) print(result['positive_probs']) print(result['negative_probs'])
下載opt轉換工具
https://paddlepaddle.github.io/Paddle-Lite/v2.2.0/model_optimize_tool/git
下載paddlehub預訓練模型並轉換
下載預訓練模型壓縮包:github
hub download senta_gru
解壓,放置在 saved_models/senta_gru 下,shell
轉換模型:框架
./opt --model_dir=senta_gru/infer_model --valid_targets=arm --optimize_out_type=naive_buffer --optimize_out=saved_models/senta_gru
PS: 查看opt轉換工具所支持的模型算子:工具
./opt --print_model_ops=true --valid_targets=arm --model_dir=senta_gru/infer_model
在樹莓派上測試轉換後的預訓練模型
from paddlelite.lite import * config = MobileConfig() config.set_model_dir("model") # (2) 建立predictor predictor = create_paddle_predictor(config) ''' ...... '''
而後就出現段錯誤了。。。學習
後記
以後開始各類找緣由,也想到多是因爲漏轉換了什麼而致使的。。。測試
也反覆找了資料,但因爲paddle還還沒有穩定,甚至連官方網站裏的demo都已過期,接口都已變更得消失不見了。。。網站
因此最終只好暫時放棄。
可能 paddlepaddle 和 paddlehub ,做爲百度paddle框架的主力,迭代速度快、完成度也還行,屬於比較可用。但其餘的組件可能優先級就比較低了,文檔也不一樣步,實在是形成了很大的困擾。
畢竟已經佔用了一成天的時間了,還要抽空學習推薦系統,和完成個人與情預測股票項目,因此paddlelite項目就只能等百度paddle穩定了再啓動吧。