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