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