Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
3ca9c14a
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3ca9c14a
编写于
5月 23, 2023
作者:
F
fangzhou12
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add ohos mindspore jsapi doc
Signed-off-by:
N
fangzhou12
<
fangzhou12@huawei.com
>
上级
da381db6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
732 addition
and
0 deletion
+732
-0
zh-cn/application-dev/ai/Readme-CN.md
zh-cn/application-dev/ai/Readme-CN.md
+3
-0
zh-cn/application-dev/ai/mindspore-lite-js-guidelines.md
zh-cn/application-dev/ai/mindspore-lite-js-guidelines.md
+120
-0
zh-cn/application-dev/reference/apis/js-apis-mindSporeLite.md
...n/application-dev/reference/apis/js-apis-mindSporeLite.md
+609
-0
未找到文件。
zh-cn/application-dev/ai/Readme-CN.md
0 → 100644
浏览文件 @
3ca9c14a
# AI
-
[
使用MindSpore Lite引擎进行模型推理
](
mindspore-lite-js-guidelines.md
)
zh-cn/application-dev/ai/mindspore-lite-js-guidelines.md
0 → 100644
浏览文件 @
3ca9c14a
# 使用MindSpore Lite引擎进行模型推理
## 场景介绍
MindSpore Lite是一款AI引擎,它提供了面向不同硬件设备AI模型推理的功能,目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。
本文介绍使用MindSpore Lite推理引擎实现模型推理的通用开发流程。对于使用Native接口实现模型推理,具体指导请见:
[
使用MindSpore Lite引擎进行模型推理
](
../napi/mindspore-lite-guidelines.md
)
。
## 基本概念
在进行开发前,请先了解以下概念。
**张量**
:它与数组和矩阵非常相似,是MindSpore Lite网络运算中的基本数据结构。
**Float16推理模式**
: Float16又称半精度,它使用16比特表示一个数。Float16推理模式表示推理的时候用半精度进行推理。
## 接口说明
这里给出MindSpore Lite推理的通用开发流程中涉及的一些接口,具体请见下列表格。更多接口及详细内容,请见
[
@ohos.ai.mindSporeLite (推理能力)
](
../reference/apis/js-apis-mindSporeLite.md
)
。
| 接口名 | 描述 |
| ------------------ | ----------------- |
|loadModelFromFile(model: string, options: Context): Promise
<
Model
>
|从路径加载模型。|
|getInputs(): MSTensor[]|获取模型的输入。|
|predict(inputs: MSTensor[]): Promise
<
MSTensor
>
|推理模型。|
| getData(): ArrayBuffer | 获取张量的数据。 |
| setData(inputArray: ArrayBuffer): void | 设置张量的数据。 |
## 开发步骤
主要流程包括模型的准备、读取、编译、推理和释放,具体开发过程及细节请见下文的开发步骤及示例。
1.
模型准备。需要的模型可以直接下载,也可以通过模型转换工具获得。需要的数据从bin文件读取。
-
下载模型的格式若为
`.ms`
,则可以直接使用。本文以mnet.caffemodel.ms为例。
-
如果是第三方框架的模型,比如 TensorFlow、TensorFlow Lite、Caffe、ONNX等,可以使用
[
模型转换工具
](
https://www.mindspore.cn/lite/docs/zh-CN/r2.0/use/downloads.html#1-8-1
)
转换为
`.ms`
格式的模型文件。
2.
创建上下文,设置线程数、设备类型等参数。
3.
加载模型。本文从路径读入模型。
4.
加载数据。模型执行之前需要先获取输入,再向输入的张量中填充数据。
5.
执行推理并打印输出。使用predict接口进行模型推理。
```
js
@
State
inputName
:
string
=
'
mnet_caffemodel_nhwc.bin
'
;
@
State
T_model_predict
:
string
=
'
Test_MSLiteModel_predict
'
inputBuffer
:
any
=
null
;
build
()
{
Row
()
{
Column
()
{
Text
(
this
.
T_model_predict
)
.
focusable
(
true
)
.
fontSize
(
30
)
.
fontWeight
(
FontWeight
.
Bold
)
.
onClick
(
async
()
=>
{
//1.模型准备
let
context
=
globalThis
.
context
;
context
.
resourceManager
.
getRawFileContent
(
this
.
inputName
).
then
((
error
,
buffer
)
=>
{
this
.
inputBuffer
=
buffer
;
console
.
log
(
'
=========input bin byte length:
'
+
this
.
inputBuffer
.
byteLength
)
}).
catch
(
error
)
{
console
.
error
(
'
Failed to get buffer, error code: ${error.code},message:${error.message}.
'
);
}
//2.创建上下文
let
options
=
{
'
target
'
:
[
'
cpu
'
]}
options
.
cpu
.
threadNum
=
1
;
options
.
cpu
.
threadAffinityMode
=
0
;
options
.
cpu
.
precisionMode
=
'
enforce_fp32
'
;
//3.加载模型
let
modelFile
=
'
/data/storage/el2/base/haps/entry/files/mnet.caffemodel.ms
'
;
let
msLiteModel
=
await
mindSporeLite
.
loadModelFromFile
(
modelFile
);
//4.加载数据
const
modelInputs
=
msLiteModel
.
getInputs
();
modelInputs
[
0
].
setData
(
this
.
inputBuffer
.
buffer
);
//5.执行推理并打印输出
console
.
log
(
'
=========MSLITE predict start=====
'
)
msLiteModel
.
predict
(
modelInputs
).
then
((
modelOutputs
)
=>
{
let
output0
=
new
Float32Array
(
modelOutputs
[
0
].
getData
());
for
(
let
i
=
0
;
i
<
output0
.
length
;
i
++
)
{
console
.
log
(
output0
[
i
].
toString
());
}
})
console
.
log
(
'
=========MSLITE predict success=====
'
)
})
}
.
width
(
'
100%
'
)
}
.
height
(
'
100%
'
)
}
```
## 调测验证
1.
在DevEco Studio 中连接rk3568开发板,点击Run entry,编译自己的hap,有如下显示:
```
shell
Launching com.example.myapptfjs
$
hdc uninstall com.example.myapptfjs
$
hdc
install
-r
"D:
\T
VOS
\J
SAPI
\M
yAppTfjs
\e
ntry
\b
uild
\d
efault
\o
utputs
\d
efault
\e
ntry-default-signed.hap"
$
hdc shell aa start
-a
EntryAbility
-b
com.example.myapptfjs
```
2.
使用hdc连接rk3568开发板,并将mnet.caffemodel.ms推送到设备中的沙盒目录。mnet_caffemodel_nhwc.bin在本地项目中的rawfile目录下。
```
shell
hdc
-t
7001005458323933328a00bcdf423800 file send .
\m
net.caffemodel.ms /data/app/el2/100/base/com.example.myapptfjs/haps/entry/files/
```
3.
在rk3568屏幕中点击Test_MSLiteModel_predict触发用例,在HiLog打印结果中得到如下结果:
```
shell
08-27 23:25:50.278 31782-31782/? I C03d00/JSAPP:
=========
MSLITE predict
start
=====
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP: 0.10046602040529252
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP: 0.07535600662231445
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP: 0.06326554715633392
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP: 0.0015114173293113708
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP:
-0
.026745859533548355
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP:
-0
.055590517818927765
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP:
-0
.05325715243816376
08-27 23:25:51.487 31782-31782/? I C03d00/JSAPP:
-0
.04629542678594589
...
08-27 23:25:52.881 31782-31782/? I C03d00/JSAPP: 0.23317644000053404
08-27 23:25:52.881 31782-31782/? I C03d00/JSAPP: 0.17999525368213654
08-27 23:25:50.372 31782-31782/? I C03d00/JSAPP:
=========
MSLITE predict
success
=====
```
zh-cn/application-dev/reference/apis/js-apis-mindSporeLite.md
0 → 100644
浏览文件 @
3ca9c14a
# @ohos.ai.mindSporeLite (推理能力)
MindSpore Lite是一款AI引擎,它提供了面向不同硬件设备AI模型推理的功能,目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。
本模块介绍了MindSpore Lite推理引擎支持模型推理的相关能力。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。示例代码使用模型均为MindSpore端侧模型。
>
## 导入模块
```
js
import
mindSporeLite
from
'
@ohos.ai.mindSporeLite
'
;
```
## Context
定义运行环境的配置信息。
### 属性
**系统能力:**
SystemCapability.AI.MindSporeLite
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ------ | ------------------------- | ---- | ---- | ------------------------------------------------------------ |
| target | string[] | 是 | 是 | 配置目标后端。可选'cpu','nnrt',默认'cpu'。 |
| cpu |
[
CpuDevice
](
#cpudevice
)
| 是 | 是 | CPU后端设备选项。只有当target包含'cpu'时,才能设置此属性。默认值为CpuDevice各属性默认值。 |
| nnrt |
[
NNRTDevice
](
#nnrtdevice
)
| 是 | 是 | NNRT后端设备选项。只有当target包含'nnrt'时,才能设置此属性,当前属性为空。 |
**示例:**
```
js
let
context
=
{}
as
any
;
context
.
target
=
[
'
cpu
'
,
'
nnrt
'
];
```
## CpuDevice
CPU后端设备选项。
### 属性
**系统能力:**
SystemCapability.AI.MindSporeLite
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ---------------------- | ----------------------------------------- | ---- | ---- | ------------------------------------------------------------ |
| threadNum | number | 是 | 是 | 设置运行时的线程数,默认值:2。 |
| threadAffinityMode |
[
ThreadAffinityMode
](
#threadaffinitymode
)
| 是 | 是 | 设置运行时的CPU绑核策略模式,默认值为不绑核:mindSporeLite.ThreadAffinityMode.NO_AFFINITIES。 |
| threadAffinityCoreList | number[] | 是 | 是 | 设置运行时的CPU绑核列表,设置绑核策略模式后使能,当绑核策略模式为mindSporeLite.ThreadAffinityMode.NO_AFFINITIES时,绑核列表为空。列表中的数字代表核的序号。默认值:[]。 |
| precisionMode | string | 是 | 是 | 设置是否使能
**Float16推理模式**
,设置为'preferred_fp16'代表使能半精度推理,其余设置情况均为不支持,默认设置'enforce_fp32'表示不使能半精度推理。 |
**Float16推理模式**
: Float16又称半精度,它使用16比特表示一个数。Float16推理模式表示推理的时候用半精度进行推理。
**示例:**
```
js
let
context
=
{}
as
any
;
context
.
target
=
[
'
cpu
'
];
context
.
cpu
.
threadAffinityMode
=
0
;
context
.
cpu
.
precisionMode
=
'
preferred_fp16
'
;
context
.
cpu
.
threadAffinityCoreList
=
[
0
,
1
,
2
];
```
## NNRTDevice
Neural Network Runtime表示神经网络运行时,简称NNRt。作为中间桥梁,连通上层 AI 推理框架和底层加速芯片,实现 AI 模型的跨芯片推理计算。MindSpore Lite 可配置NNRt后端。当前暂未支持。
**系统能力:**
SystemCapability.AI.MindSporeLite
## ThreadAffinityMode
设置运行时的CPU绑核策略模式,有效值为0-2,0为默认不绑核,1为绑大核,2为绑中核。
**系统能力:**
SystemCapability.AI.MindSporeLite
| 名称 | 值 | 说明 |
| ------------------ | ---- | ------------ |
| NO_AFFINITIES | 0 | 不绑核。 |
| BIG_CORES_FIRST | 1 | 绑大核优先。 |
| LITTLE_CORES_FIRST | 2 | 绑中核优先。 |
## mindSporeLite.loadModelFromFile
loadModelFromFile(model: string, callback: Callback
<
Model
>
): void
从完整路径加载输入模型用于推理。使用callback异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ------------------------ |
| model | string | 是 | 模型的完整输入路径。 |
| callback | Callback
<
[
Model
](
#model
)
>
| 是 | 回调函数。返回模型对象。 |
**示例:**
```
js
let
model_file
=
'
/path/to/xxx.ms
'
;
mindSporeLite
.
loadModelFromFile
(
model_file
,
(
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
```
## mindSporeLite.loadModelFromFile
loadModelFromFile(model: string, context: Context, callback: Callback
<
Model
>
): void
从完整路径加载输入模型用于推理。使用callback异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | ---------------------- |
| model | string | 是 | 模型的完整输入路径。 |
| context |
[
Context
](
#context
)
| 是 | 运行环境的配置信息。 |
| callback | Callback
<
[
Model
](
#model
)
>
| 是 | 回调函数。返回模型对象。 |
**示例:**
```
js
let
context
=
{
'
target
'
:
[
'
cpu
'
]
};
let
model_file
=
'
/path/to/xxx.ms
'
;
mindSporeLite
.
loadModelFromFile
(
model_file
,
context
,
(
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
```
## mindSporeLite.loadModelFromFile
loadModelFromFile(model: string, context?: Context): Promise
<
Model
>
从完整路径加载输入模型用于推理。使用Promise异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------- | ---- | -------------------- |
| model | string | 是 | 模型的完整输入路径。 |
| context |
[
Context
](
#context
)
| 否 | 运行环境的配置信息。 |
**返回值:**
| 类型 | 说明 |
| ------------------------- | ---------------------------- |
| Promise
<
[
Model
](
#model
)
>
| Promise对象。返回Model对象。 |
**示例:**
```
js
let
model_file
=
'
/path/to/xxx.ms
'
;
mindSporeLite
.
loadModelFromFile
(
model_file
).
then
((
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
```
## mindSporeLite.loadModelFromBuffer
loadModelFromBuffer(model: ArrayBuffer, callback: Callback
<
Model
>
): void
从内存加载输入模型用于推理。使用callback异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ------------------------ |
| model | ArrayBuffer | 是 | 包含模型的内存。 |
| callback | Callback
<
[
Model
](
#model
)
>
| 是 | 回调函数。返回模型对象。 |
**示例:**
```
js
import
resourceManager
from
'
@ohos.resourceManager
'
@
State
modelName
:
string
=
'
xxx.ms
'
;
context
.
resourceManager
.
getRawFileContent
(
this
.
modelName
).
then
((
error
,
buffer
)
=>
{
this
.
modelBuffer
=
buffer
;
}).
catch
(
error
)
{
console
.
error
(
'
Failed to get buffer, error code: ${error.code},message:${error.message}.
'
);
}
mindSporeLite
.
loadModelFromBuffer
(
this
.
modelBuffer
.
buffer
,
(
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
```
## mindSporeLite.loadModelFromBuffer
loadModelFromBuffer(model: ArrayBuffer, context: Context, callback: Callback
<
Model
>
): void
从内存加载输入模型用于推理。使用callback异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | ---------------------- |
| model | ArrayBuffer | 是 | 包含模型的内存。 |
| context |
[
Context
](
#context
)
| 是 | 运行环境的配置信息。 |
| callback | Callback
<
[
Model
](
#model
)
>
| 是 | 回调函数。返回模型对象。 |
**示例:**
```
js
import
resourceManager
from
'
@ohos.resourceManager
'
@
State
modelName
:
string
=
'
xxx.ms
'
;
context
.
resourceManager
.
getRawFileContent
(
this
.
modelName
).
then
((
error
,
buffer
)
=>
{
this
.
modelBuffer
=
buffer
;
}).
catch
(
error
)
{
console
.
error
(
'
Failed to get buffer, error code: ${error.code},message:${error.message}.
'
);
}
let
context
=
{
'
target
'
:
[
'
cpu
'
]};
mindSporeLite
.
loadModelFromBuffer
(
this
.
modelBuffer
.
buffer
,
context
,
(
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
```
## mindSporeLite.loadModelFromBuffer
loadModelFromBuffer(model: ArrayBuffer, context?: Context): Promise
<
Model
>
从内存加载输入模型用于推理。使用Promise异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------- | ---- | -------------------- |
| model | ArrayBuffer | 是 | 包含模型的内存。 |
| context |
[
Context
](
#context
)
| 否 | 运行环境的配置信息。 |
**返回值:**
| 类型 | 说明 |
| ------------------------------- | ---------------------------- |
| Promise
<
[
Model
](
#model
)
>
| Promise对象。返回Model对象。 |
**示例:**
```
js
import
resourceManager
from
'
@ohos.resourceManager
'
@
State
modelName
:
string
=
'
xxx.ms
'
;
context
.
resourceManager
.
getRawFileContent
(
this
.
modelName
).
then
((
error
,
buffer
)
=>
{
this
.
modelBuffer
=
buffer
;
}).
catch
(
error
)
{
console
.
error
(
'
Failed to get buffer, error code: ${error.code},message:${error.message}.
'
);
}
mindSporeLite
.
loadModelFromBuffer
(
model_file
).
then
((
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
```
## mindSporeLite.loadModelFromFd
loadModelFromFd(model: number, callback: Callback
<
Model
>
): void
从文件描述符加载输入模型用于推理。使用callback异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | ---------------------- |
| model | number | 是 | 模型的文件描述符。 |
| callback | Callback
<
[
Model
](
#model
)
>
| 是 | 回调函数。返回模型对象。 |
**示例:**
```
js
import
fs
from
'
@ohos.file.fs
'
;
let
model_file
=
'
/path/to/xxx.ms
'
;
fs
.
open
(
model_file
,
0
,
async
function
(
err
,
file
)
{
mindSporeLite
.
loadModelFromFd
(
file
.
fd
,
(
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
})
```
## mindSporeLite.loadModelFromFd
loadModelFromFd(model: number, context: Context, callback: Callback
<
Model
>
): void
从文件描述符加载输入模型用于推理。使用callback异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | ---- | ---------------------- |
| model | number | 是 | 模型的文件描述符。 |
| context |
[
Context
](
#context
)
| 是 | 运行环境的配置信息。 |
| callback | Callback
<
[
Model
](
#model
)
>
| 是 | 回调函数。返回模型对象。 |
**示例:**
```
js
import
fs
from
'
@ohos.file.fs
'
;
let
model_file
=
'
/path/to/xxx.ms
'
;
let
context
=
{
'
target
'
:
[
'
cpu
'
]};
fs
.
open
(
model_file
,
0
,
async
function
(
err
,
file
)
{
mindSporeLite
.
loadModelFromFd
(
file
.
fd
,
context
,
(
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
})
```
## mindSporeLite.loadModelFromFd
loadModelFromFd(model: number, context?: Context): Promise
<
Model
>
从文件描述符加载输入模型用于推理。使用Promise异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------------------- | ---- | -------------------- |
| model | number | 是 | 模型的文件描述符。 |
| context |
[
Context
](
#context
)
| 否 | 运行环境的配置信息。 |
**返回值:**
| 类型 | 说明 |
| ------------------------- | ---------------------------- |
| Promise
<
[
Model
](
#model
)
>
| Promise对象。返回Model对象。 |
**示例:**
```
js
import
fs
from
'
@ohos.file.fs
'
;
let
model_file
=
'
/path/to/xxx.ms
'
;
fs
.
open
(
model_file
,
0
,
async
function
(
err
,
file
)
{
let
mindSporeLiteModel
=
await
mindSporeLite
.
loadModelFromFd
(
file
.
fd
);
mindSporeLite
.
loadModelFromFd
(
file
.
fd
).
then
((
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
})
```
## Model
模型实例。描述Model对象的属性和方法。
下例API示例中都需先使用
[
loadModelFromFile()
](
#mindsporeliteloadmodelfromfile
)
、
[
loadModelFromBuffer()
](
#mindsporeliteloadmodelfrombuffer
)
、
[
loadModelFromFd()
](
#mindsporeliteloadmodelfromfd
)
中的任一方法获取到Model实例,再通过此实例调用对应方法。
### getInputs
getInputs(): MSTensor[]
获取模型的输入用于推理。
**系统能力:**
SystemCapability.AI.MindSporeLite
**返回值:**
| 类型 | 说明 |
| ----------------------- | ------------------ |
|
[
MSTensor
](
#mstensor
)[]
| 返回MSTensor对象。 |
**示例:**
```
js
let
model_file
=
'
/path/to/xxx.ms
'
;
mindSporeLite
.
loadModelFromFile
(
model_file
).
then
((
result
)
=>
{
const
modelInputs
=
result
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
})
```
### predict
predict(inputs: MSTensor[], callback: Callback
<
Model
>
): void
执行推理模型。使用callback异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------- | ---- | -------------------------- |
| inputs |
[
MSTensor
](
#mstensor
)[]
| 是 | 模型的输入。MSTensor对象。 |
| callback | Callback
<
[
Model
](
#model
)
>
| 是 | 回调函数。返回模型对象。 |
**示例:**
```
js
import
resourceManager
from
'
@ohos.resourceManager
'
@
State
inputName
:
string
=
'
input_data.bin
'
;
context
.
resourceManager
.
getRawFileContent
(
this
.
inputName
).
then
((
error
,
buffer
)
=>
{
this
.
inputBuffer
=
buffer
;
let
model_file
=
'
/path/to/xxx.ms
'
;
let
mindSporeLiteModel
=
await
mindSporeLite
.
loadModelFromFile
(
model_file
);
const
modelInputs
=
mindSporeLiteModel
.
getInputs
();
modelInputs
[
0
].
setData
(
this
.
inputBuffer
.
buffer
);
result
.
predict
(
modelInputs
,
(
result
)
=>
{
let
output
=
new
Float32Array
(
result
[
0
].
getData
());
for
(
let
i
=
0
;
i
<
output
.
length
;
i
++
)
{
console
.
log
(
output
[
i
].
toString
());
}
})
})
```
### predict
predict(inputs: MSTensor[]): Promise
<
MSTensor[]
>
执行推理模型。使用Promise异步回调。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------- | ---- | -------------------------- |
| inputs |
[
MSTensor
](
#mstensor
)[]
| 是 | 模型的输入。MSTensor对象。 |
**返回值:**
| 类型 | 说明 |
| ----------------------- | ------------------ |
|
[
MSTensor
](
#mstensor
)[]
| 返回MSTensor对象。 |
**示例:**
```
js
import
resourceManager
from
'
@ohos.resourceManager
'
@
State
inputName
:
string
=
'
input_data.bin
'
;
context
.
resourceManager
.
getRawFileContent
(
this
.
inputName
).
then
((
error
,
buffer
)
=>
{
this
.
inputBuffer
=
buffer
;
let
model_file
=
'
/path/to/xxx.ms
'
;
let
mindSporeLiteModel
=
await
mindSporeLite
.
loadModelFromFile
(
model_file
);
const
modelInputs
=
mindSporeLiteModel
.
getInputs
();
modelInputs
[
0
].
setData
(
this
.
inputBuffer
.
buffer
);
result
.
predict
(
modelInputs
).
then
((
result
)
=>
{
let
output
=
new
Float32Array
(
result
[
0
].
getData
());
for
(
let
i
=
0
;
i
<
output
.
length
;
i
++
)
{
console
.
log
(
output
[
i
].
toString
());
}
})
})
```
### resize
resize(inputs: MSTensor[], dims: Array
<
Array
<
number
>>
): boolean
重新设置张量大小。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | --------------------- | ---- | ----------------------------- |
| inputs |
[
MSTensor
](
#mstensor
)[]
| 是 | 模型的输入。 |
| dims | Array
<
Array
<
number
>>
| 是 | 需要修改的目标张量大小。 |
**返回值:**
| 类型 | 说明 |
| ------- | ------------------------------------------------------------ |
| boolean | 返回是否设置成功的结果。true表示重新设置张量大小成功;false表示重新设置张量大小失败。 |
**示例:**
```
js
let
model_file
=
'
/path/to/xxx.ms
'
;
let
mindSporeLiteModel
=
await
mindSporeLite
.
loadModelFromFile
(
model_file
);
const
modelInputs
=
mindSporeLiteModel
.
getInputs
();
let
new_dim
=
new
Array
([
1
,
32
,
32
,
1
]);
mindSporeLiteModel
.
resize
(
modelInputs
,
new_dim
);
```
## MSTensor
模型张量实例。描述MSTensor对象的属性和方法。它与数组和矩阵非常相似,是MindSpore Lite网络运算中的基本数据结构。
下例API示例中都需先使用
[
getInputs()
](
#getinputs
)
获取到MSTensor实例,再通过此实例调用对应方法。
### 属性
**系统能力:**
SystemCapability.AI.MindSporeLite
| 名称 | 类型 | 可读 | 可写 | 说明 |
| ---------- | --------------------- | ---- | ---- | ---------------------------------------------------- |
| name | string | 是 | 是 | 张量的名称。默认为null |
| shape | number[] | 是 | 是 | 张量的维度数组。默认为0。 |
| elementNum | number | 是 | 是 | 张量的维度数组的长度。默认为0。 |
| dataSize | number | 是 | 是 | 张量的数据的长度。默认为0。 |
| dtype |
[
DataType
](
#datatype
)
| 是 | 是 | 张量的数据类型。默认值为0,代表TYPE_UNKNOWN。 |
| format |
[
Format
](
#format
)
| 是 | 是 | 张量的数据排布方式。默认值为-1,代表DEFAULT_FORMAT。 |
**示例:**
```
js
let
model_file
=
'
/path/to/xxx.ms
'
;
let
mindSporeLiteModel
=
await
mindSporeLite
.
loadModelFromFile
(
model_file
);
const
modelInputs
=
mindSporeLiteModel
.
getInputs
();
console
.
log
(
modelInputs
[
0
].
name
);
console
.
log
(
modelInputs
[
0
].
shape
.
toString
());
console
.
log
(
modelInputs
[
0
].
elementNum
.
toString
());
console
.
log
(
modelInputs
[
0
].
dtype
.
toString
());
console
.
log
(
modelInputs
[
0
].
format
.
toString
());
console
.
log
(
modelInputs
[
0
].
dataSize
.
toString
());
```
### getData
getData(): ArrayBuffer
获取张量的数据。
**系统能力:**
SystemCapability.AI.MindSporeLite
**返回值:**
| 类型 | 说明 |
| ----------- | -------------------- |
| ArrayBuffer | 返回张量的数据指针。 |
**示例:**
```
js
//如果已经获取了输出张量
result
.
predict
(
modelInputs
,
(
result
)
=>
{
let
output
=
new
Float32Array
(
result
[
0
].
getData
());
for
(
let
i
=
0
;
i
<
output
.
length
;
i
++
)
{
console
.
log
(
output
[
i
].
toString
());
}
})
```
### setData
setData(inputArray: ArrayBuffer): void
设置张量的数据。
**系统能力:**
SystemCapability.AI.MindSporeLite
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ----------- | ---- | ---------------------- |
| inputArray | ArrayBuffer | 是 | 张量的输入数据缓冲区。 |
**示例:**
```
js
import
resourceManager
from
'
@ohos.resourceManager
'
@
State
inputName
:
string
=
'
input_data.bin
'
;
context
.
resourceManager
.
getRawFileContent
(
this
.
inputName
).
then
((
error
,
buffer
)
=>
{
this
.
inputBuffer
=
buffer
;
})
let
model_file
=
'
/path/to/xxx.ms
'
;
let
mindSporeLiteModel
=
await
mindSporeLite
.
loadModelFromFile
(
model_file
);
const
modelInputs
=
mindSporeLiteModel
.
getInputs
();
modelInputs
[
0
].
setData
(
this
.
inputBuffer
.
buffer
);
```
## DataType
张量的数据类型。
**系统能力:**
SystemCapability.AI.MindSporeLite
| 名称 | 值 | 说明 |
| ------------------- | ---- | ------------------- |
| TYPE_UNKNOWN | 0 | 未知类型。 |
| NUMBER_TYPE_INT8 | 32 | 保持Int8的类型。 |
| NUMBER_TYPE_INT16 | 33 | 保持Int16的类型。 |
| NUMBER_TYPE_INT32 | 34 | 保持Int32的类型。 |
| NUMBER_TYPE_INT64 | 35 | 保持Int64的类型。 |
| NUMBER_TYPE_UINT8 | 37 | 保持UInt8的类型。 |
| NUMBER_TYPE_UINT16 | 38 | 保持UInt16的类型。 |
| NUMBER_TYPE_UINT32 | 39 | 保持UInt32的类型。 |
| NUMBER_TYPE_UINT64 | 40 | 保持UInt64的类型。 |
| NUMBER_TYPE_FLOAT16 | 42 | 保持Float16的类型。 |
| NUMBER_TYPE_FLOAT32 | 43 | 保持Float32的类型。 |
| NUMBER_TYPE_FLOAT64 | 44 | 保持Float64的类型。 |
## Format
张量的数据排布方式。
**系统能力:**
SystemCapability.AI.MindSporeLite
| 名称 | 值 | 说明 |
| -------------- | ---- | --------------------- |
| DEFAULT_FORMAT | -1 | 未知数据排布方式。 |
| NCHW | 0 | 数据排布方式为NCHW。 |
| NHWC | 1 | 数据排布方式为NHWC。 |
| NHWC4 | 2 | 数据排布方式为NHWC4。 |
| HWKC | 3 | 数据排布方式为HWKC。 |
| HWCK | 4 | 数据排布方式为HWCK。 |
| KCHW | 5 | 数据排布方式为KCHW。 |
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录