js-apis-mindSporeLite.md 22.8 KB
Newer Older
F
fangzhou12 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
# @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
F
fangzhou12 已提交
34
let context: mindSporeLite.Context = {};
F
fangzhou12 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
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
F
fangzhou12 已提交
58 59
let context: mindSporeLite.Context = {};
context.cpu = {};
F
fangzhou12 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
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&lt;Model&gt;): void

从完整路径加载输入模型用于推理。使用callback异步回调。

**系统能力:** SystemCapability.AI.MindSporeLite

**参数:**

| 参数名   | 类型                                | 必填 | 说明                   |
| -------- | ----------------------------------- | ---- | ---------------------- |
| model    | string                              | 是   | 模型的完整输入路径。   |
| context | [Context](#context) | 是 | 运行环境的配置信息。 |
| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |

**示例:** 

```js
F
fangzhou12 已提交
127
let context: mindSporeLite.Context = {};
F
fangzhou0329 已提交
128
context = {'target': ['cpu']};
F
fangzhou12 已提交
129 130 131 132 133 134 135 136 137 138
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&lt;Model&gt;

F
fangzhou12 已提交
139
从完整路径加载输入模型用于推理。使用Promise异步函数。
F
fangzhou12 已提交
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183

**系统能力:** 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&lt;Model&gt;): void

从内存加载输入模型用于推理。使用callback异步回调。

**系统能力:** SystemCapability.AI.MindSporeLite

**参数:**

| 参数名   | 类型                      | 必填 | 说明                     |
| -------- | ------------------------- | ---- | ------------------------ |
| model    | ArrayBuffer               | 是   | 包含模型的内存。         |
| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |

**示例:** 

```js
import resourceManager from '@ohos.resourceManager'
F
fangzhou0329 已提交
184
let modelName = '/path/to/xxx.ms';
F
fangzhou12 已提交
185
let syscontext = globalThis.context;
F
fangzhou0329 已提交
186 187
syscontext.resourceManager.getRawFileContent(modelName).then((buffer) => {
  let modelBuffer = buffer;
F
fangzhou0329 已提交
188 189 190 191
  mindSporeLite.loadModelFromBuffer(modelBuffer.buffer, (result) => {
  	const modelInputs = result.getInputs();
  	console.log(modelInputs[0].name);
  })
F
fangzhou12 已提交
192
}).catch(error => {
F
fangzhou12 已提交
193
  console.error('Failed to get buffer, error code: ${error.code},message:${error.message}.');
F
fangzhou12 已提交
194
})
F
fangzhou12 已提交
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
```
## mindSporeLite.loadModelFromBuffer

loadModelFromBuffer(model: ArrayBuffer, context: Context, callback: Callback&lt;Model&gt;): void

从内存加载输入模型用于推理。使用callback异步回调。

**系统能力:** SystemCapability.AI.MindSporeLite

**参数:**

| 参数名   | 类型                                | 必填 | 说明                   |
| -------- | ----------------------------------- | ---- | ---------------------- |
| model    | ArrayBuffer                   | 是   | 包含模型的内存。 |
| context | [Context](#context) | 是  | 运行环境的配置信息。 |
| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |

**示例:** 

```js
import resourceManager from '@ohos.resourceManager'
F
fangzhou0329 已提交
216
let modelName = '/path/to/xxx.ms';
F
fangzhou12 已提交
217
let syscontext = globalThis.context;
F
fangzhou0329 已提交
218 219
syscontext.resourceManager.getRawFileContent(modelName).then((error,buffer) => {
  let modelBuffer = buffer;
F
fangzhou0329 已提交
220 221 222 223 224 225
  let context: mindSporeLite.Context = {};
  context = {'target': ['cpu']};
  mindSporeLite.loadModelFromBuffer(modelBuffer.buffer, context, (result) => {
    const modelInputs = result.getInputs();
    console.log(modelInputs[0].name);
  })  
F
fangzhou12 已提交
226
}).catch(error => {
F
fangzhou12 已提交
227
  console.error('Failed to get buffer, error code: ${error.code},message:${error.message}.');
F
fangzhou12 已提交
228
})
F
fangzhou12 已提交
229 230 231 232 233
```
## mindSporeLite.loadModelFromBuffer

loadModelFromBuffer(model: ArrayBuffer, context?: Context): Promise&lt;Model&gt;

F
fangzhou12 已提交
234
从内存加载输入模型用于推理。使用Promise异步函数。
F
fangzhou12 已提交
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254

**系统能力:** SystemCapability.AI.MindSporeLite

**参数:**

| 参数名  | 类型                | 必填 | 说明                 |
| ------- | ------------------- | ---- | -------------------- |
| model   | ArrayBuffer         | 是   | 包含模型的内存。     |
| context | [Context](#context) | 否   | 运行环境的配置信息。 |

**返回值:**

| 类型                            | 说明                         |
| ------------------------------- | ---------------------------- |
| Promise<[Model](#model)> | Promise对象。返回Model对象。 |

**示例:** 

```js
import resourceManager from '@ohos.resourceManager'
F
fangzhou0329 已提交
255
let modelName = '/path/to/xxx.ms';
F
fangzhou12 已提交
256
let syscontext = globalThis.context;
F
fangzhou0329 已提交
257 258
syscontext.resourceManager.getRawFileContent(modelName).then((buffer) => {
  let modelBuffer = buffer;
F
fangzhou0329 已提交
259 260 261 262
  mindSporeLite.loadModelFromBuffer(modelBuffer.buffer).then((result) => {
    const modelInputs = result.getInputs();
    console.log(modelInputs[0].name);
  })  
F
fangzhou12 已提交
263
}).catch(error => {
F
fangzhou12 已提交
264
  console.error('Failed to get buffer, error code: ${error.code},message:${error.message}.');
F
fangzhou12 已提交
265
})
F
fangzhou12 已提交
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
```
## mindSporeLite.loadModelFromFd

loadModelFromFd(model: number, callback: Callback&lt;Model&gt;): 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';
F
fangzhou0329 已提交
287
let file = fs.openSync(model_file, fs.OpenMode.READ_ONLY);
F
fangzhou12 已提交
288 289 290
mindSporeLite.loadModelFromFd(file.fd, (result) => {
  const modelInputs = result.getInputs();
  console.log(modelInputs[0].name);
F
fangzhou12 已提交
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
})
```
## mindSporeLite.loadModelFromFd

loadModelFromFd(model: number, context: Context, callback: Callback&lt;Model&gt;): 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';
F
fangzhou12 已提交
314 315
let context : mindSporeLite.Context = {};
context = {'target': ['cpu']};
F
fangzhou0329 已提交
316
let file = fs.openSync(model_file, fs.OpenMode.READ_ONLY);
F
fangzhou12 已提交
317 318 319
mindSporeLite.loadModelFromFd(file.fd, context, (result) => {
  const modelInputs = result.getInputs();
  console.log(modelInputs[0].name);
F
fangzhou12 已提交
320 321 322 323 324 325
})
```
## mindSporeLite.loadModelFromFd

loadModelFromFd(model: number, context?: Context): Promise&lt; Model&gt;

F
fangzhou12 已提交
326
从文件描述符加载输入模型用于推理。使用Promise异步函数。
F
fangzhou12 已提交
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347

**系统能力:** 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';
F
fangzhou0329 已提交
348
let file = fs.openSync(model_file, fs.OpenMode.READ_ONLY);
F
fangzhou12 已提交
349 350 351 352
let mindSporeLiteModel = await mindSporeLite.loadModelFromFd(file.fd);
mindSporeLite.loadModelFromFd(file.fd).then((result) => {
  const modelInputs = result.getInputs();
  console.log(modelInputs[0].name);
F
fangzhou12 已提交
353 354 355 356 357 358 359 360 361 362 363 364
})
```
## Model

模型实例。描述Model对象的属性和方法。

下例API示例中都需先使用[loadModelFromFile()](#mindsporeliteloadmodelfromfile)[loadModelFromBuffer()](#mindsporeliteloadmodelfrombuffer)[loadModelFromFd()](#mindsporeliteloadmodelfromfd)中的任一方法获取到Model实例,再通过此实例调用对应方法。

### getInputs

getInputs(): MSTensor[]

F
fangzhou0329 已提交
365
获取模型的输入用于推理。
F
fangzhou12 已提交
366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385

**系统能力:**  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

F
fangzhou0329 已提交
386
predict(inputs: MSTensor[], callback: Callback&lt;MSTensor[]&gt;): void
F
fangzhou12 已提交
387

F
fangzhou0329 已提交
388
执行推理模型。使用callback异步回调。需要确保调用时模型对象不被资源回收。
F
fangzhou12 已提交
389 390 391 392 393 394 395 396

**系统能力:**  SystemCapability.AI.MindSporeLite

**参数:**

| 参数名 | 类型                    | 必填 | 说明                       |
| ------ | ----------------------- | ---- | -------------------------- |
| inputs | [MSTensor](#mstensor)[] | 是   | 模型的输入。MSTensor对象。 |
F
fangzhou0329 已提交
397
| callback | Callback<[MSTensor](#mstensor)[]> | 是   | 回调函数。返回MSTensor对象。 |
F
fangzhou12 已提交
398 399 400 401 402

**示例:** 

```js
import resourceManager from '@ohos.resourceManager'
F
fangzhou0329 已提交
403
let inputName = 'input_data.bin';
F
fangzhou12 已提交
404
let syscontext = globalThis.context;
F
fangzhou0329 已提交
405
syscontext.resourceManager.getRawFileContent(inputName).then(async (buffer) => {
F
fangzhou0329 已提交
406
  let inputBuffer = buffer;
F
fangzhou12 已提交
407 408 409
  let model_file = '/path/to/xxx.ms';
  let mindSporeLiteModel = await mindSporeLite.loadModelFromFile(model_file);
  const modelInputs = mindSporeLiteModel.getInputs();
F
fangzhou0329 已提交
410
  modelInputs[0].setData(inputBuffer.buffer);
F
fangzhou12 已提交
411 412 413 414 415 416 417 418 419 420 421 422
  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&lt;MSTensor[]&gt;

F
fangzhou0329 已提交
423
执行推理模型。使用Promise异步函数。需要确保调用时模型对象不被资源回收。
F
fangzhou12 已提交
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442

**系统能力:**  SystemCapability.AI.MindSporeLite

**参数:**

| 参数名 | 类型                    | 必填 | 说明                       |
| ------ | ----------------------- | ---- | -------------------------- |
| inputs | [MSTensor](#mstensor)[] | 是   | 模型的输入。MSTensor对象。 |

**返回值:**

| 类型                    | 说明               |
| ----------------------- | ------------------ |
| [MSTensor](#mstensor)[] | 返回MSTensor对象。 |

**示例:** 

```js
import resourceManager from '@ohos.resourceManager'
F
fangzhou0329 已提交
443
let inputName = 'input_data.bin';
F
fangzhou12 已提交
444
let syscontext = globalThis.context;
F
fangzhou0329 已提交
445
syscontext.resourceManager.getRawFileContent(inputName).then(async (buffer) => {
F
fangzhou0329 已提交
446
  let inputBuffer = buffer;
F
fangzhou12 已提交
447 448 449
  let model_file = '/path/to/xxx.ms';
  let mindSporeLiteModel = await mindSporeLite.loadModelFromFile(model_file);
  const modelInputs = mindSporeLiteModel.getInputs();
F
fangzhou0329 已提交
450
  modelInputs[0].setData(inputBuffer.buffer);
F
fangzhou12 已提交
451 452 453 454 455 456 457 458 459 460 461 462 463
  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&lt;Array&lt;number&gt;&gt;): boolean

F
fangzhou0329 已提交
464
重新设置张量大小。
F
fangzhou12 已提交
465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484

**系统能力:**  SystemCapability.AI.MindSporeLite

**参数:**

| 参数名 | 类型                  | 必填 | 说明                          |
| ------ | --------------------- | ---- | ----------------------------- |
| inputs | [MSTensor](#mstensor)[]            | 是   | 模型的输入。    |
| dims   | Array&lt;Array&lt;number&gt;&gt; | 是   | 需要修改的目标张量大小。 |

**返回值:**

| 类型    | 说明                                                         |
| ------- | ------------------------------------------------------------ |
| boolean | 返回是否设置成功的结果。true表示重新设置张量大小成功;false表示重新设置张量大小失败。 |

**示例:** 

```js
let model_file = '/path/to/xxx.ms';
F
fangzhou12 已提交
485 486 487 488 489
mindSporeLite.loadModelFromFile(model_file).then((mindSporeLiteModel) => {
  const modelInputs = mindSporeLiteModel.getInputs();
  let new_dim = new Array([1,32,32,1]);
  mindSporeLiteModel.resize(modelInputs, new_dim);
})
F
fangzhou12 已提交
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514
```

## 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';
F
fangzhou12 已提交
515 516 517 518 519 520 521 522 523
mindSporeLite.loadModelFromFile(model_file).then((mindSporeLiteModel) => {
  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());
})
F
fangzhou12 已提交
524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542
```

### getData

getData(): ArrayBuffer

获取张量的数据。

**系统能力:** SystemCapability.AI.MindSporeLite

**返回值:**

| 类型        | 说明                 |
| ----------- | -------------------- |
| ArrayBuffer | 返回张量的数据指针。 |

**示例:** 

```js
F
fangzhou12 已提交
543
import resourceManager from '@ohos.resourceManager'
F
fangzhou0329 已提交
544
let inputName = 'input_data.bin';
F
fangzhou12 已提交
545
let syscontext = globalThis.context;
F
fangzhou0329 已提交
546
syscontext.resourceManager.getRawFileContent(inputName).then(async (buffer) => {
F
fangzhou0329 已提交
547
  let inputBuffer = buffer;
F
fangzhou12 已提交
548 549 550
  let model_file = '/path/to/xxx.ms';
  let mindSporeLiteModel = await mindSporeLite.loadModelFromFile(model_file);
  const modelInputs = mindSporeLiteModel.getInputs();
F
fangzhou0329 已提交
551
  modelInputs[0].setData(inputBuffer.buffer);
F
fangzhou12 已提交
552 553 554 555 556 557
  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());
    }
  })
F
fangzhou12 已提交
558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578
})
```

### setData

setData(inputArray: ArrayBuffer): void

设置张量的数据。

**系统能力:** SystemCapability.AI.MindSporeLite

**参数:**

| 参数名     | 类型        | 必填 | 说明                   |
| ---------- | ----------- | ---- | ---------------------- |
| inputArray | ArrayBuffer | 是   | 张量的输入数据缓冲区。 |

**示例:** 

```js
import resourceManager from '@ohos.resourceManager'
F
fangzhou0329 已提交
579
let inputName = 'input_data.bin';
F
fangzhou12 已提交
580
let syscontext = globalThis.context;
F
fangzhou0329 已提交
581
syscontext.resourceManager.getRawFileContent(inputName).then(async (buffer) => {
F
fangzhou0329 已提交
582
  inputBuffer = buffer;
F
fangzhou0329 已提交
583 584 585 586
  let model_file = '/path/to/xxx.ms';
  let mindSporeLiteModel = await mindSporeLite.loadModelFromFile(model_file);
  const modelInputs = mindSporeLiteModel.getInputs();
  modelInputs[0].setData(inputBuffer.buffer);
F
fangzhou12 已提交
587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625
})
```

## 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。  |