本項目支持在 Atalas 200 DK上運行,實現了句子級情感極性分類網絡的推理功能,輸出每個類別的置信度。
本reademe提供該應用運行c++推理代碼的說明,以及python環境下模型訓練及推理的的步驟說明。
運行此工程項目前,需要按照此章節獲取源碼包。
cd $HOME/AscendProjects
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/200dk/SentimentAnalysis.zip
unzip SentimentAnalysis.zip
如果wget下載失敗,可復制下載鏈接到瀏覽器。
模型的PB文件在 models/snapshots 路徑下。BERT網絡預訓練好的參數來自 https://github.com/google-research/bert 中的 [BERT-Base, Chinese] 部分。
將原始網絡模型轉換為適配昇騰AI處理器的模型。
cd SentimentAnalysis/src/acl_demo
./model_convert.sh
運行以上命令,將會在models/snapshots 路徑下生成OM模型。
安裝編譯工具
sudo apt-get install -y g++-aarch64-linux-gnu g++-5-aarch64-linux-gnu
下載jsoncpp源碼
cd ./models
git clone https://github.com/open-source-parsers/jsoncpp.git
cd jsoncpp
到 jsoncpp 目錄里后,執行python腳本,生成 dist 子目錄
python amalgamate.py
編譯ACL/C++代碼
進入src/acl_demo 目錄,運行 shell 腳本:
./build.sh
編譯后的可執行文件 inference 在 build 目錄中。
一鍵推理
文本數據讀取、數據預處理和前向推理三個步驟整合到一個命令中,執行如下shell命令:
cd src/acl_demo
./build/inference -m ../../models/snapshots/models.om -i ../../models/hotel.decode.txt -o ../../output/
-m :指定OM模型的路徑;
-i : 指定輸入的句子級中文文本文件的路徑;
-o : 指定網絡輸出結果的保存目錄。
查看輸出結果
cd ../../models
python check_output.py
shell里會輸出網絡的輸出矩陣,每一行的三個數字對應三個情感類別的score,取最大的score對應的類別作為該評論的情感極性。
? 以上描述了在Ascend 310上運行ACL/C++代碼來實現網絡推理的完整流程。下面的內容是介紹在CPU/GPU上的進行模型訓練/推理的方式:
訓練
首先進入到 tf_total_sentiment 目錄中,
cd SentimentAnalysis/models
python main.py
訓練過程中的神經網絡參數將被保存在 snapshots 子目錄里。
推理/測試
python test.py