• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.ai.mindSporeLite (推理能力)
2
3MindSpore Lite是一款AI引擎,它提供了面向不同硬件设备AI模型推理的功能,目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。
4本模块介绍了MindSpore Lite推理引擎支持模型推理的相关能力。
5
6> **说明:**
7>
8> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。示例代码使用模型均为MindSpore端侧模型。
9>
10> 本模块接口仅可在Stage模型下使用。
11
12## 导入模块
13```ts
14import mindSporeLite from '@ohos.ai.mindSporeLite';
15```
16
17## Context
18
19定义运行环境的配置信息。
20
21### 属性
22
23**系统能力:** SystemCapability.AI.MindSporeLite
24
25
26| 名称   | 类型                      | 可读 | 可写 | 说明                                                         |
27| ------ | ------------------------- | ---- | ---- | ------------------------------------------------------------ |
28| target | string[]                  | 是   | 是   | 配置目标后端。可选'cpu','nnrt',默认'cpu'。                 |
29| cpu    | [CpuDevice](#cpudevice)   | 是   | 是   | CPU后端设备选项。只有当target包含'cpu'时,才能设置此属性。默认值为CpuDevice各属性默认值。 |
30| nnrt   | [NNRTDevice](#nnrtdevice) | 是   | 是   | NNRT后端设备选项。只有当target包含'nnrt'时,才能设置此属性,当前属性为空。 |
31
32**示例:**
33
34```ts
35let context: mindSporeLite.Context = {};
36context.target = ['cpu','nnrt'];
37```
38
39## CpuDevice
40
41CPU后端设备选项。
42
43### 属性
44
45**系统能力:** SystemCapability.AI.MindSporeLite
46
47| 名称                   | 类型                                      | 可读 | 可写 | 说明                                                         |
48| ---------------------- | ----------------------------------------- | ---- | ---- | ------------------------------------------------------------ |
49| threadNum              | number                                    | 是   | 是   | 设置运行时的线程数,默认值:2。                              |
50| threadAffinityMode     | [ThreadAffinityMode](#threadaffinitymode) | 是   | 是   | 设置运行时的CPU绑核策略模式,默认值为不绑核:mindSporeLite.ThreadAffinityMode.NO_AFFINITIES。 |
51| threadAffinityCoreList | number[]                                  | 是   | 是   | 设置运行时的CPU绑核列表,设置绑核策略模式后使能,当绑核策略模式为mindSporeLite.ThreadAffinityMode.NO_AFFINITIES时,绑核列表为空。列表中的数字代表核的序号。默认值:[]。 |
52| precisionMode          | string                                    | 是   | 是   | 设置是否使能**Float16推理模式**,设置为'preferred_fp16'代表使能半精度推理,其余设置情况均为不支持,默认设置'enforce_fp32'表示不使能半精度推理。 |
53
54**Float16推理模式**:  Float16又称半精度,它使用16比特表示一个数。Float16推理模式表示推理的时候用半精度进行推理。
55
56**示例:**
57
58```ts
59let context: mindSporeLite.Context = {};
60context.cpu = {};
61context.target = ['cpu'];
62context.cpu.threadNum = 2;
63context.cpu.threadAffinityMode = 0;
64context.cpu.precisionMode = 'preferred_fp16';
65context.cpu.threadAffinityCoreList = [0, 1, 2];
66```
67
68## NNRTDevice
69
70Neural Network Runtime表示神经网络运行时,简称NNRt。作为中间桥梁,连通上层 AI 推理框架和底层加速芯片,实现 AI 模型的跨芯片推理计算。MindSpore Lite 可配置NNRt后端。当前暂未支持。
71
72**系统能力:** SystemCapability.AI.MindSporeLite
73
74## ThreadAffinityMode
75
76设置运行时的CPU绑核策略模式,有效值为0-2,0为默认不绑核,1为绑大核,2为绑中核。
77
78**系统能力:** SystemCapability.AI.MindSporeLite
79
80| 名称               | 值   | 说明         |
81| ------------------ | ---- | ------------ |
82| NO_AFFINITIES      | 0    | 不绑核。     |
83| BIG_CORES_FIRST    | 1    | 绑大核优先。 |
84| LITTLE_CORES_FIRST | 2    | 绑小核优先。 |
85
86## mindSporeLite.loadModelFromFile
87
88loadModelFromFile(model: string, callback: Callback<Model>): void
89
90从完整路径加载输入模型用于推理。使用callback异步回调。
91
92**系统能力:** SystemCapability.AI.MindSporeLite
93
94**参数:**
95
96| 参数名   | 类型                      | 必填 | 说明                     |
97| -------- | ------------------------- | ---- | ------------------------ |
98| model    | string                    | 是   | 模型的完整输入路径。     |
99| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
100
101**示例:**
102
103```ts
104let model_file : string = '/path/to/xxx.ms';
105mindSporeLite.loadModelFromFile(model_file, (result : mindSporeLite.Model) => {
106  let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
107  console.log(modelInputs[0].name);
108})
109```
110## mindSporeLite.loadModelFromFile
111
112loadModelFromFile(model: string, context: Context, callback: Callback&lt;Model&gt;): void
113
114从完整路径加载输入模型用于推理。使用callback异步回调。
115
116**系统能力:** SystemCapability.AI.MindSporeLite
117
118**参数:**
119
120| 参数名   | 类型                                | 必填 | 说明                   |
121| -------- | ----------------------------------- | ---- | ---------------------- |
122| model    | string                              | 是   | 模型的完整输入路径。   |
123| context | [Context](#context) | 是 | 运行环境的配置信息。 |
124| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
125
126**示例:**
127
128```ts
129let context: mindSporeLite.Context = {};
130context.target = ['cpu'];
131let model_file : string = '/path/to/xxx.ms';
132mindSporeLite.loadModelFromFile(model_file, context, (result : mindSporeLite.Model) => {
133  let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
134  console.log(modelInputs[0].name);
135})
136```
137## mindSporeLite.loadModelFromFile
138
139loadModelFromFile(model: string, context?: Context): Promise&lt;Model&gt;
140
141从完整路径加载输入模型用于推理。使用Promise异步函数。
142
143**系统能力:** SystemCapability.AI.MindSporeLite
144
145**参数:**
146
147| 参数名  | 类型                | 必填 | 说明                 |
148| ------- | ------------------- | ---- | -------------------- |
149| model   | string              | 是   | 模型的完整输入路径。 |
150| context | [Context](#context) | 否   | 运行环境的配置信息。 |
151
152**返回值:**
153
154| 类型                      | 说明                         |
155| ------------------------- | ---------------------------- |
156| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
157
158**示例:**
159
160```ts
161let model_file = '/path/to/xxx.ms';
162mindSporeLite.loadModelFromFile(model_file).then((result : mindSporeLite.Model) => {
163  let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
164  console.log(modelInputs[0].name);
165})
166```
167## mindSporeLite.loadModelFromBuffer
168
169loadModelFromBuffer(model: ArrayBuffer, callback: Callback&lt;Model&gt;): void
170
171从内存加载输入模型用于推理。使用callback异步回调。
172
173**系统能力:** SystemCapability.AI.MindSporeLite
174
175**参数:**
176
177| 参数名   | 类型                      | 必填 | 说明                     |
178| -------- | ------------------------- | ---- | ------------------------ |
179| model    | ArrayBuffer               | 是   | 包含模型的内存。         |
180| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
181
182**示例:**
183
184```ts
185import mindSporeLite from '@ohos.ai.mindSporeLite';
186import common from '@ohos.app.ability.common';
187
188let modelName = '/path/to/xxx.ms';
189getContext(this).resourceManager.getRawFileContent(modelName).then((buffer : Uint8Array) => {
190  let modelBuffer = buffer.buffer;
191  mindSporeLite.loadModelFromBuffer(modelBuffer, (result : mindSporeLite.Model) => {
192    let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
193    console.log(modelInputs[0].name);
194  })
195})
196```
197## mindSporeLite.loadModelFromBuffer
198
199loadModelFromBuffer(model: ArrayBuffer, context: Context, callback: Callback&lt;Model&gt;): void
200
201从内存加载输入模型用于推理。使用callback异步回调。
202
203**系统能力:** SystemCapability.AI.MindSporeLite
204
205**参数:**
206
207| 参数名   | 类型                                | 必填 | 说明                   |
208| -------- | ----------------------------------- | ---- | ---------------------- |
209| model    | ArrayBuffer                   | 是   | 包含模型的内存。 |
210| context | [Context](#context) | 是  | 运行环境的配置信息。 |
211| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
212
213**示例:**
214
215```ts
216import resourceManager from '@ohos.resourceManager'
217import { GlobalContext } from '../GlobalContext';
218import mindSporeLite from '@ohos.ai.mindSporeLite';
219import common from '@ohos.app.ability.common';
220let modelName = '/path/to/xxx.ms';
221export class Test {
222  value:number = 0;
223  foo(): void {
224    GlobalContext.getContext().setObject("value", this.value);
225  }
226}
227let globalContext= GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
228
229globalContext.resourceManager.getRawFileContent(modelName).then((buffer : Uint8Array) => {
230  let modelBuffer = buffer.buffer;
231  let context: mindSporeLite.Context = {};
232  context.target = ['cpu'];
233  mindSporeLite.loadModelFromBuffer(modelBuffer, context, (result : mindSporeLite.Model) => {
234    let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
235    console.log(modelInputs[0].name);
236  })
237})
238```
239## mindSporeLite.loadModelFromBuffer
240
241loadModelFromBuffer(model: ArrayBuffer, context?: Context): Promise&lt;Model&gt;
242
243从内存加载输入模型用于推理。使用Promise异步函数。
244
245**系统能力:** SystemCapability.AI.MindSporeLite
246
247**参数:**
248
249| 参数名  | 类型                | 必填 | 说明                 |
250| ------- | ------------------- | ---- | -------------------- |
251| model   | ArrayBuffer         | 是   | 包含模型的内存。     |
252| context | [Context](#context) | 否   | 运行环境的配置信息。 |
253
254**返回值:**
255
256| 类型                            | 说明                         |
257| ------------------------------- | ---------------------------- |
258| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
259
260**示例:**
261
262```ts
263import resourceManager from '@ohos.resourceManager'
264import { GlobalContext } from '../GlobalContext';
265import mindSporeLite from '@ohos.ai.mindSporeLite';
266import common from '@ohos.app.ability.common';
267let modelName = '/path/to/xxx.ms';
268export class Test {
269  value:number = 0;
270  foo(): void {
271    GlobalContext.getContext().setObject("value", this.value);
272  }
273}
274let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
275
276globalContext.resourceManager.getRawFileContent(modelName).then((buffer : Uint8Array) => {
277  let modelBuffer = buffer.buffer;
278  mindSporeLite.loadModelFromBuffer(modelBuffer).then((result : mindSporeLite.Model) => {
279    let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
280    console.log(modelInputs[0].name);
281  })
282})
283```
284## mindSporeLite.loadModelFromFd
285
286loadModelFromFd(model: number, callback: Callback&lt;Model&gt;): void
287
288从文件描述符加载输入模型用于推理。使用callback异步回调。
289
290**系统能力:** SystemCapability.AI.MindSporeLite
291
292**参数:**
293
294| 参数名   | 类型                                | 必填 | 说明                   |
295| -------- | ----------------------------------- | ---- | ---------------------- |
296| model    | number                         | 是   | 模型的文件描述符。 |
297| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
298
299**示例:**
300
301```ts
302import fs from '@ohos.file.fs';
303let model_file = '/path/to/xxx.ms';
304let file = fs.openSync(model_file, fs.OpenMode.READ_ONLY);
305mindSporeLite.loadModelFromFd(file.fd, (result : mindSporeLite.Model) => {
306  let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
307  console.log(modelInputs[0].name);
308})
309```
310## mindSporeLite.loadModelFromFd
311
312loadModelFromFd(model: number, context: Context, callback: Callback&lt;Model&gt;): void
313
314从文件描述符加载输入模型用于推理。使用callback异步回调。
315
316**系统能力:** SystemCapability.AI.MindSporeLite
317
318**参数:**
319
320| 参数名   | 类型                                | 必填 | 说明                   |
321| -------- | ----------------------------------- | ---- | ---------------------- |
322| model    | number                   | 是   | 模型的文件描述符。 |
323| context | [Context](#context) | 是  | 运行环境的配置信息。 |
324| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
325
326**示例:**
327
328```ts
329import fs from '@ohos.file.fs';
330let model_file = '/path/to/xxx.ms';
331let context : mindSporeLite.Context = {};
332context.target = ['cpu'];
333let file = fs.openSync(model_file, fs.OpenMode.READ_ONLY);
334mindSporeLite.loadModelFromFd(file.fd, context, (result : mindSporeLite.Model) => {
335  let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
336  console.log(modelInputs[0].name);
337})
338```
339## mindSporeLite.loadModelFromFd
340
341loadModelFromFd(model: number, context?: Context): Promise&lt;Model&gt;
342
343从文件描述符加载输入模型用于推理。使用Promise异步函数。
344
345**系统能力:** SystemCapability.AI.MindSporeLite
346
347**参数:**
348
349| 参数名  | 类型                | 必填 | 说明                 |
350| ------- | ------------------- | ---- | -------------------- |
351| model   | number              | 是   | 模型的文件描述符。   |
352| context | [Context](#context) | 否   | 运行环境的配置信息。 |
353
354**返回值:**
355
356| 类型                      | 说明                         |
357| ------------------------- | ---------------------------- |
358| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
359
360**示例:**
361
362```ts
363import fs from '@ohos.file.fs';
364let model_file = '/path/to/xxx.ms';
365let file = fs.openSync(model_file, fs.OpenMode.READ_ONLY);
366let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFd(file.fd);
367let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
368console.log(modelInputs[0].name);
369```
370## Model
371
372模型实例。描述Model对象的属性和方法。
373
374下例API示例中都需先使用[loadModelFromFile()](#mindsporeliteloadmodelfromfile)、[loadModelFromBuffer()](#mindsporeliteloadmodelfrombuffer)、[loadModelFromFd()](#mindsporeliteloadmodelfromfd)中的任一方法获取到Model实例,再通过此实例调用对应方法。
375
376### getInputs
377
378getInputs(): MSTensor[]
379
380获取模型的输入用于推理。
381
382**系统能力:**  SystemCapability.AI.MindSporeLite
383
384**返回值:**
385
386| 类型                    | 说明               |
387| ----------------------- | ------------------ |
388| [MSTensor](#mstensor)[] | 返回MSTensor对象。 |
389
390**示例:**
391
392```ts
393let model_file = '/path/to/xxx.ms';
394mindSporeLite.loadModelFromFile(model_file).then((result : mindSporeLite.Model) => {
395  let modelInputs : mindSporeLite.MSTensor[] = result.getInputs();
396  console.log(modelInputs[0].name);
397})
398```
399### predict
400
401predict(inputs: MSTensor[], callback: Callback&lt;MSTensor[]&gt;): void
402
403执行推理模型。使用callback异步回调。需要确保调用时模型对象不被资源回收。
404
405**系统能力:**  SystemCapability.AI.MindSporeLite
406
407**参数:**
408
409| 参数名 | 类型                    | 必填 | 说明                       |
410| ------ | ----------------------- | ---- | -------------------------- |
411| inputs | [MSTensor](#mstensor)[] | 是   | 模型的输入列表。MSTensor对象。 |
412| callback | Callback<[MSTensor](#mstensor)[]> | 是   | 回调函数。返回MSTensor对象。 |
413
414**示例:**
415
416```ts
417import resourceManager from '@ohos.resourceManager'
418import { GlobalContext } from '../GlobalContext';
419import mindSporeLite from '@ohos.ai.mindSporeLite';
420import common from '@ohos.app.ability.common';
421export class Test {
422  value:number = 0;
423  foo(): void {
424    GlobalContext.getContext().setObject("value", this.value);
425  }
426}
427let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
428
429let inputName = 'input_data.bin';
430globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
431  let modelBuffer = buffer.buffer;
432  let model_file : string = '/path/to/xxx.ms';
433  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(model_file);
434  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
435
436  modelInputs[0].setData(modelBuffer);
437  mindSporeLiteModel.predict(modelInputs, (result : mindSporeLite.MSTensor[]) => {
438    let output = new Float32Array(result[0].getData());
439    for (let i = 0; i < output.length; i++) {
440      console.log(output[i].toString());
441    }
442  })
443})
444```
445### predict
446
447predict(inputs: MSTensor[]): Promise&lt;MSTensor[]&gt;
448
449执行推理模型,返回推理结果。使用Promise异步回调。需要确保调用时模型对象不被资源回收。
450
451**系统能力:**  SystemCapability.AI.MindSporeLite
452
453**参数:**
454
455| 参数名 | 类型                    | 必填 | 说明                           |
456| ------ | ----------------------- | ---- | ------------------------------ |
457| inputs | [MSTensor](#mstensor)[] | 是   | 模型的输入列表。MSTensor对象。 |
458
459**返回值:**
460
461| 类型                    | 说明                   |
462| ----------------------- | ---------------------- |
463| Promise<[MSTensor](#mstensor)[]> | Promise对象。返回MSTensor对象列表。 |
464
465**示例:**
466
467```ts
468import resourceManager from '@ohos.resourceManager'
469import { GlobalContext } from '../GlobalContext';
470import mindSporeLite from '@ohos.ai.mindSporeLite';
471import common from '@ohos.app.ability.common';
472export class Test {
473    value:number = 0;
474    foo(): void {
475    GlobalContext.getContext().setObject("value", this.value);
476}
477}
478let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;;
479let inputName = 'input_data.bin';
480globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
481  let modelBuffer = buffer.buffer;
482  let model_file = '/path/to/xxx.ms';
483  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(model_file);
484  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
485  modelInputs[0].setData(modelBuffer);
486  mindSporeLiteModel.predict(modelInputs).then((result : mindSporeLite.MSTensor[]) => {
487    let output = new Float32Array(result[0].getData());
488    for (let i = 0; i < output.length; i++) {
489      console.log(output[i].toString());
490    }
491  })
492})
493```
494
495### resize
496
497resize(inputs: MSTensor[], dims: Array&lt;Array&lt;number&gt;&gt;): boolean
498
499重新设置张量大小。
500
501**系统能力:**  SystemCapability.AI.MindSporeLite
502
503**参数:**
504
505| 参数名 | 类型                  | 必填 | 说明                          |
506| ------ | --------------------- | ---- | ----------------------------- |
507| inputs | [MSTensor](#mstensor)[]            | 是   | 模型的输入列表。  |
508| dims   | Array&lt;Array&lt;number&gt;&gt; | 是   | 需要修改的目标张量大小。 |
509
510**返回值:**
511
512| 类型    | 说明                                                         |
513| ------- | ------------------------------------------------------------ |
514| boolean | 返回是否设置成功的结果。true表示重新设置张量大小成功;false表示重新设置张量大小失败。 |
515
516**示例:**
517
518```ts
519let model_file = '/path/to/xxx.ms';
520mindSporeLite.loadModelFromFile(model_file).then((mindSporeLiteModel : mindSporeLite.Model) => {
521  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
522  let new_dim = new Array([1,32,32,1]);
523  mindSporeLiteModel.resize(modelInputs, new_dim);
524})
525```
526
527## MSTensor
528
529模型张量实例。描述MSTensor对象的属性和方法。它与数组和矩阵非常相似,是MindSpore Lite网络运算中的基本数据结构。
530
531下例API示例中都需先使用[getInputs()](#getinputs)获取到MSTensor实例,再通过此实例调用对应方法。
532
533### 属性
534
535**系统能力:**  SystemCapability.AI.MindSporeLite
536
537| 名称       | 类型                  | 可读 | 可写 | 说明                                                 |
538| ---------- | --------------------- | ---- | ---- | ---------------------------------------------------- |
539| name       | string                | 是   | 是   | 张量的名称。默认为null                               |
540| shape      | number[]              | 是   | 是   | 张量的维度数组。默认为0。                            |
541| elementNum | number                | 是   | 是   | 张量的维度数组的长度。默认为0。                      |
542| dataSize   | number                | 是   | 是   | 张量的数据的长度。默认为0。                          |
543| dtype      | [DataType](#datatype) | 是   | 是   | 张量的数据类型。默认值为0,代表TYPE_UNKNOWN。        |
544| format     | [Format](#format)     | 是   | 是   | 张量的数据排布方式。默认值为-1,代表DEFAULT_FORMAT。 |
545
546**示例:**
547
548```ts
549let model_file = '/path/to/xxx.ms';
550mindSporeLite.loadModelFromFile(model_file).then((mindSporeLiteModel : mindSporeLite.Model) => {
551  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
552  console.log(modelInputs[0].name);
553  console.log(modelInputs[0].shape.toString());
554  console.log(modelInputs[0].elementNum.toString());
555  console.log(modelInputs[0].dtype.toString());
556  console.log(modelInputs[0].format.toString());
557  console.log(modelInputs[0].dataSize.toString());
558})
559```
560
561### getData
562
563getData(): ArrayBuffer
564
565获取张量的数据。
566
567**系统能力:** SystemCapability.AI.MindSporeLite
568
569**返回值:**
570
571| 类型        | 说明                 |
572| ----------- | -------------------- |
573| ArrayBuffer | 返回张量的数据指针。 |
574
575**示例:**
576
577```ts
578import resourceManager from '@ohos.resourceManager'
579import { GlobalContext } from '../GlobalContext';
580import mindSporeLite from '@ohos.ai.mindSporeLite';
581import common from '@ohos.app.ability.common';
582export class Test {
583  value:number = 0;
584  foo(): void {
585    GlobalContext.getContext().setObject("value", this.value);
586  }
587}
588let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
589let inputName = 'input_data.bin';
590globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
591  let inputBuffer = buffer.buffer;
592  let model_file = '/path/to/xxx.ms';
593  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(model_file);
594  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
595  modelInputs[0].setData(inputBuffer);
596  mindSporeLiteModel.predict(modelInputs).then((result : mindSporeLite.MSTensor[]) => {
597    let output = new Float32Array(result[0].getData());
598    for (let i = 0; i < output.length; i++) {
599      console.log(output[i].toString());
600    }
601  })
602})
603```
604
605### setData
606
607setData(inputArray: ArrayBuffer): void
608
609设置张量的数据。
610
611**系统能力:** SystemCapability.AI.MindSporeLite
612
613**参数:**
614
615| 参数名     | 类型        | 必填 | 说明                   |
616| ---------- | ----------- | ---- | ---------------------- |
617| inputArray | ArrayBuffer | 是   | 张量的输入数据缓冲区。 |
618
619**示例:**
620
621```ts
622import resourceManager from '@ohos.resourceManager'
623import { GlobalContext } from '../GlobalContext';
624import mindSporeLite from '@ohos.ai.mindSporeLite';
625import common from '@ohos.app.ability.common';
626export class Test {
627  value:number = 0;
628  foo(): void {
629    GlobalContext.getContext().setObject("value", this.value);
630  }
631}
632let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
633let inputName = 'input_data.bin';
634globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
635  let inputBuffer = buffer.buffer;
636  let model_file = '/path/to/xxx.ms';
637  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(model_file);
638  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
639  modelInputs[0].setData(inputBuffer);
640})
641```
642
643## DataType
644
645张量的数据类型。
646
647**系统能力:** SystemCapability.AI.MindSporeLite
648
649| 名称                | 值   | 说明                |
650| ------------------- | ---- | ------------------- |
651| TYPE_UNKNOWN        | 0    | 未知类型。          |
652| NUMBER_TYPE_INT8    | 32   | 保持Int8的类型。    |
653| NUMBER_TYPE_INT16   | 33   | 保持Int16的类型。   |
654| NUMBER_TYPE_INT32   | 34   | 保持Int32的类型。   |
655| NUMBER_TYPE_INT64   | 35   | 保持Int64的类型。   |
656| NUMBER_TYPE_UINT8   | 37   | 保持UInt8的类型。   |
657| NUMBER_TYPE_UINT16  | 38   | 保持UInt16的类型。  |
658| NUMBER_TYPE_UINT32  | 39   | 保持UInt32的类型。  |
659| NUMBER_TYPE_UINT64  | 40   | 保持UInt64的类型。  |
660| NUMBER_TYPE_FLOAT16 | 42   | 保持Float16的类型。 |
661| NUMBER_TYPE_FLOAT32 | 43   | 保持Float32的类型。 |
662| NUMBER_TYPE_FLOAT64 | 44   | 保持Float64的类型。 |
663
664## Format
665
666张量的数据排布方式。
667
668**系统能力:** SystemCapability.AI.MindSporeLite
669
670| 名称           | 值   | 说明                  |
671| -------------- | ---- | --------------------- |
672| DEFAULT_FORMAT | -1   | 未知数据排布方式。    |
673| NCHW           | 0    | 数据排布方式为NCHW。  |
674| NHWC           | 1    | 数据排布方式为NHWC。  |
675| NHWC4          | 2    | 数据排布方式为NHWC4。 |
676| HWKC           | 3    | 数据排布方式为HWKC。  |
677| HWCK           | 4    | 数据排布方式为HWCK。  |
678| KCHW           | 5    | 数据排布方式为KCHW。  |
679