本项目支持在 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