1# @ohos.ai.mindSporeLite (端侧AI框架)
2
3MindSpore Lite 是一个轻量化、高性能的端侧AI引擎,提供了标准的模型推理和训练接口,内置通用硬件高性能算子库,原生支持Neural Network Runtime Kit使能AI专用芯片加速推理,助力打造全场景智能应用。
4
5本模块主要介绍MindSpore Lite AI引擎支持模型端侧推理/训练的相关能力。
6
7> **说明:**
8>
9> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。示例代码使用模型均为MindSpore端侧模型。
10>
11> - 本模块接口仅可在Stage模型下使用。
12
13## 导入模块
14
15```ts
16import { mindSporeLite } from '@kit.MindSporeLiteKit';
17```
18
19## mindSporeLite.loadModelFromFile
20
21loadModelFromFile(model: string, callback: Callback<Model>): void
22
23从完整路径加载输入模型用于推理。使用callback异步回调。
24
25**系统能力:** SystemCapability.AI.MindSporeLite
26
27**参数:**
28
29| 参数名   | 类型                      | 必填 | 说明                     |
30| -------- | ------------------------- | ---- | ------------------------ |
31| model    | string                    | 是   | 模型的完整输入路径。     |
32| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
33
34**示例:**
35
36```ts
37let modelFile : string = '/path/to/xxx.ms';
38mindSporeLite.loadModelFromFile(modelFile, (mindSporeLiteModel : mindSporeLite.Model) => {
39  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
40  console.info(modelInputs[0].name);
41})
42```
43## mindSporeLite.loadModelFromFile
44
45loadModelFromFile(model: string, context: Context, callback: Callback&lt;Model&gt;): void
46
47从完整路径加载输入模型用于推理。使用callback异步回调。
48
49**系统能力:** SystemCapability.AI.MindSporeLite
50
51**参数:**
52
53| 参数名   | 类型                                | 必填 | 说明                   |
54| -------- | ----------------------------------- | ---- | ---------------------- |
55| model    | string                              | 是   | 模型的完整输入路径。   |
56| context | [Context](#context) | 是 | 运行环境的配置信息。 |
57| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
58
59**示例:**
60
61```ts
62let context: mindSporeLite.Context = {};
63context.target = ['cpu'];
64let modelFile : string = '/path/to/xxx.ms';
65mindSporeLite.loadModelFromFile(modelFile, context, (mindSporeLiteModel : mindSporeLite.Model) => {
66  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
67  console.info(modelInputs[0].name);
68})
69```
70## mindSporeLite.loadModelFromFile
71
72loadModelFromFile(model: string, context?: Context): Promise&lt;Model&gt;
73
74从完整路径加载输入模型用于推理。使用Promise异步函数。
75
76**系统能力:** SystemCapability.AI.MindSporeLite
77
78**参数:**
79
80| 参数名  | 类型                | 必填 | 说明                                          |
81| ------- | ------------------- | ---- | --------------------------------------------- |
82| model   | string              | 是   | 模型的完整输入路径。                          |
83| context | [Context](#context) | 否   | 运行环境的配置信息。默认使用CpuDevice初始化。 |
84
85**返回值:**
86
87| 类型                      | 说明                         |
88| ------------------------- | ---------------------------- |
89| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
90
91**示例:**
92
93```ts
94let modelFile = '/path/to/xxx.ms';
95mindSporeLite.loadModelFromFile(modelFile).then((mindSporeLiteModel : mindSporeLite.Model) => {
96  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
97  console.info(modelInputs[0].name);
98})
99```
100## mindSporeLite.loadModelFromBuffer
101
102loadModelFromBuffer(model: ArrayBuffer, callback: Callback&lt;Model&gt;): void
103
104从内存加载输入模型用于推理。使用callback异步回调。
105
106**系统能力:** SystemCapability.AI.MindSporeLite
107
108**参数:**
109
110| 参数名   | 类型                      | 必填 | 说明                     |
111| -------- | ------------------------- | ---- | ------------------------ |
112| model    | ArrayBuffer               | 是   | 包含模型的内存。         |
113| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
114
115**示例:**
116
117```ts
118import { mindSporeLite } from '@kit.MindSporeLiteKit';
119import { common } from '@kit.AbilityKit';
120
121let modelFile = '/path/to/xxx.ms';
122getContext(this).resourceManager.getRawFileContent(modelFile).then((buffer : Uint8Array) => {
123  let modelBuffer = buffer.buffer;
124  mindSporeLite.loadModelFromBuffer(modelBuffer, (mindSporeLiteModel : mindSporeLite.Model) => {
125    let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
126    console.info(modelInputs[0].name);
127  })
128})
129```
130## mindSporeLite.loadModelFromBuffer
131
132loadModelFromBuffer(model: ArrayBuffer, context: Context, callback: Callback&lt;Model&gt;): void
133
134从内存加载输入模型用于推理。使用callback异步回调。
135
136**系统能力:** SystemCapability.AI.MindSporeLite
137
138**参数:**
139
140| 参数名   | 类型                                | 必填 | 说明                   |
141| -------- | ----------------------------------- | ---- | ---------------------- |
142| model    | ArrayBuffer                   | 是   | 包含模型的内存。 |
143| context | [Context](#context) | 是  | 运行环境的配置信息。 |
144| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
145
146**示例:**
147
148```ts
149import { resourceManager } from '@kit.LocalizationKit';
150import { GlobalContext } from '../GlobalContext';
151import { mindSporeLite } from '@kit.MindSporeLiteKit';
152import { common } from '@kit.AbilityKit';
153let modelFile = '/path/to/xxx.ms';
154export class Test {
155  value:number = 0;
156  foo(): void {
157    GlobalContext.getContext().setObject("value", this.value);
158  }
159}
160let globalContext= GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
161
162globalContext.resourceManager.getRawFileContent(modelFile).then((buffer : Uint8Array) => {
163  let modelBuffer = buffer.buffer;
164  let context: mindSporeLite.Context = {};
165  context.target = ['cpu'];
166  mindSporeLite.loadModelFromBuffer(modelBuffer, context, (mindSporeLiteModel : mindSporeLite.Model) => {
167    let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
168    console.info(modelInputs[0].name);
169  })
170})
171```
172## mindSporeLite.loadModelFromBuffer
173
174loadModelFromBuffer(model: ArrayBuffer, context?: Context): Promise&lt;Model&gt;
175
176从内存加载输入模型用于推理。使用Promise异步函数。
177
178**系统能力:** SystemCapability.AI.MindSporeLite
179
180**参数:**
181
182| 参数名  | 类型                | 必填 | 说明                                          |
183| ------- | ------------------- | ---- | --------------------------------------------- |
184| model   | ArrayBuffer         | 是   | 包含模型的内存。                              |
185| context | [Context](#context) | 否   | 运行环境的配置信息。默认使用CpuDevice初始化。 |
186
187**返回值:**
188
189| 类型                            | 说明                         |
190| ------------------------------- | ---------------------------- |
191| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
192
193**示例:**
194
195```ts
196import { resourceManager } from '@kit.LocalizationKit';
197import { GlobalContext } from '../GlobalContext';
198import { mindSporeLite } from '@kit.MindSporeLiteKit';
199import { common } from '@kit.AbilityKit';
200let modelFile = '/path/to/xxx.ms';
201export class Test {
202  value:number = 0;
203  foo(): void {
204    GlobalContext.getContext().setObject("value", this.value);
205  }
206}
207let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
208
209globalContext.resourceManager.getRawFileContent(modelFile).then((buffer : Uint8Array) => {
210  let modelBuffer = buffer.buffer;
211  mindSporeLite.loadModelFromBuffer(modelBuffer).then((mindSporeLiteModel : mindSporeLite.Model) => {
212    let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
213    console.info(modelInputs[0].name);
214  })
215})
216```
217## mindSporeLite.loadModelFromFd
218
219loadModelFromFd(model: number, callback: Callback&lt;Model&gt;): void
220
221从文件描述符加载输入模型用于推理。使用callback异步回调。
222
223**系统能力:** SystemCapability.AI.MindSporeLite
224
225**参数:**
226
227| 参数名   | 类型                                | 必填 | 说明                   |
228| -------- | ----------------------------------- | ---- | ---------------------- |
229| model    | number                         | 是   | 模型的文件描述符。 |
230| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
231
232**示例:**
233
234```ts
235import { fileIo } from '@kit.CoreFileKit';
236let modelFile = '/path/to/xxx.ms';
237let file = fileIo.openSync(modelFile, fileIo.OpenMode.READ_ONLY);
238mindSporeLite.loadModelFromFd(file.fd, (mindSporeLiteModel : mindSporeLite.Model) => {
239  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
240  console.info(modelInputs[0].name);
241})
242```
243## mindSporeLite.loadModelFromFd
244
245loadModelFromFd(model: number, context: Context, callback: Callback&lt;Model&gt;): void
246
247从文件描述符加载输入模型用于推理。使用callback异步回调。
248
249**系统能力:** SystemCapability.AI.MindSporeLite
250
251**参数:**
252
253| 参数名   | 类型                                | 必填 | 说明                   |
254| -------- | ----------------------------------- | ---- | ---------------------- |
255| model    | number                   | 是   | 模型的文件描述符。 |
256| context | [Context](#context) | 是  | 运行环境的配置信息。 |
257| callback | Callback<[Model](#model)> | 是   | 回调函数。返回模型对象。 |
258
259**示例:**
260
261```ts
262import { fileIo } from '@kit.CoreFileKit';
263let modelFile = '/path/to/xxx.ms';
264let context : mindSporeLite.Context = {};
265context.target = ['cpu'];
266let file = fileIo.openSync(modelFile, fileIo.OpenMode.READ_ONLY);
267mindSporeLite.loadModelFromFd(file.fd, context, (mindSporeLiteModel : mindSporeLite.Model) => {
268  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
269  console.info(modelInputs[0].name);
270})
271```
272## mindSporeLite.loadModelFromFd
273
274loadModelFromFd(model: number, context?: Context): Promise&lt;Model&gt;
275
276从文件描述符加载输入模型用于推理。使用Promise异步函数。
277
278**系统能力:** SystemCapability.AI.MindSporeLite
279
280**参数:**
281
282| 参数名  | 类型                | 必填 | 说明                                          |
283| ------- | ------------------- | ---- | --------------------------------------------- |
284| model   | number              | 是   | 模型的文件描述符。                            |
285| context | [Context](#context) | 否   | 运行环境的配置信息。默认使用CpuDevice初始化。 |
286
287**返回值:**
288
289| 类型                      | 说明                         |
290| ------------------------- | ---------------------------- |
291| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
292
293**示例:**
294
295```ts
296import { fileIo } from '@kit.CoreFileKit';
297let modelFile = '/path/to/xxx.ms';
298let file = fileIo.openSync(modelFile, fileIo.OpenMode.READ_ONLY);
299mindSporeLite.loadModelFromFd(file.fd).then((mindSporeLiteModel: mindSporeLite.Model) => {
300  let modelInputs: mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
301  console.info(modelInputs[0].name);
302})
303```
304
305## mindSporeLite.loadTrainModelFromFile<sup>12+</sup>
306
307loadTrainModelFromFile(model: string, trainCfg?: TrainCfg, context?: Context): Promise&lt;Model&gt;
308
309根据路径加载训练模型文件。使用Promise异步回调。
310
311**系统能力:** SystemCapability.AI.MindSporeLite
312
313**参数:**
314
315| 参数名   | 类型                    | 必填 | 说明                                           |
316| -------- | ----------------------- | ---- | ---------------------------------------------- |
317| model    | string                  | 是   | 模型的完整输入路径。                           |
318| trainCfg | [TrainCfg](#traincfg12) | 否   | 模型训练配置。默认值为TrainCfg各属性默认值。   |
319| context  | [Context](#context)     | 否   | 运行环境的配置信息。默认使用CpuDevice初始化。 |
320
321**返回值:**
322
323| 类型                       | 说明                   |
324| ------------------------ | -------------------- |
325| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
326
327**示例:**
328
329```ts
330let modelFile = '/path/to/xxx.ms';
331mindSporeLite.loadTrainModelFromFile(modelFile).then((mindSporeLiteModel : mindSporeLite.Model) => {
332  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
333  console.info(modelInputs[0].name);
334})
335```
336
337## mindSporeLite.loadTrainModelFromBuffer<sup>12+</sup>
338
339loadTrainModelFromBuffer(model: ArrayBuffer, trainCfg?: TrainCfg, context?: Context): Promise&lt;Model&gt;
340
341从内存缓冲区加载训练模型。使用Promise异步回调。
342
343**系统能力:** SystemCapability.AI.MindSporeLite
344
345**参数:**
346
347| 参数名   | 类型                    | 必填 | 说明                                          |
348| -------- | ----------------------- | ---- | --------------------------------------------- |
349| model    | ArrayBuffer             | 是   | 包含训练模型的内存。                          |
350| trainCfg | [TrainCfg](#traincfg12) | 否   | 模型训练配置。默认值为TrainCfg各属性默认值。  |
351| context  | [Context](#context)     | 否   | 运行环境的配置信息。默认使用CpuDevice初始化。 |
352
353**返回值:**
354
355| 类型                       | 说明                   |
356| ------------------------ | -------------------- |
357| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
358
359**示例:**
360
361```ts
362import { resourceManager } from '@kit.LocalizationKit'
363let modelFile = 'xxx.ms';
364let resMgr: resourceManager.ResourceManager = getContext().getApplicationContext().resourceManager;
365resMgr.getRawFileContent(modelFile).then(modelBuffer => {
366  mindSporeLite.loadTrainModelFromBuffer(modelBuffer.buffer).then((mindSporeLiteModel: mindSporeLite.Model) => {
367    console.info("MSLITE trainMode: ", mindSporeLiteModel.trainMode);
368  })
369})
370```
371
372## mindSporeLite.loadTrainModelFromFd<sup>12+</sup>
373
374loadTrainModelFromFd(model: number, trainCfg?: TrainCfg, context?: Context): Promise&lt;Model&gt;
375
376从文件描述符加载训练模型文件。使用Promise异步回调。
377
378**系统能力:** SystemCapability.AI.MindSporeLite
379
380**参数:**
381
382| 参数名   | 类型                    | 必填 | 说明                                          |
383| -------- | ----------------------- | ---- | --------------------------------------------- |
384| model    | number                  | 是   | 训练模型的文件描述符。                        |
385| trainCfg | [TrainCfg](#traincfg12) | 否   | 模型训练配置。默认值为TrainCfg各属性默认值。  |
386| context  | [Context](#context)     | 否   | 运行环境的配置信息。默认使用CpuDevice初始化。 |
387
388**返回值:**
389
390| 类型                     | 说明                         |
391| ------------------------ | ---------------------------- |
392| Promise<[Model](#model)> | Promise对象。返回Model对象。 |
393
394**示例:**
395
396```ts
397import { fileIo } from '@kit.CoreFileKit';
398let modelFile = '/path/to/xxx.ms';
399let file = fileIo.openSync(modelFile, fileIo.OpenMode.READ_ONLY);
400mindSporeLite.loadTrainModelFromFd(file.fd).then((mindSporeLiteModel: mindSporeLite.Model) => {
401  console.info("MSLITE trainMode: ", mindSporeLiteModel.trainMode);
402});
403```
404
405## mindSporeLite.getAllNNRTDeviceDescriptions<sup>12+</sup>
406
407getAllNNRTDeviceDescriptions() : NNRTDeviceDescription[]
408
409获取NNRt中的所有设备描述。
410
411**系统能力:** SystemCapability.AI.MindSporeLite
412
413**返回值:**
414
415| 类型                                                | 说明                   |
416| --------------------------------------------------- | ---------------------- |
417| [NNRTDeviceDescription](#nnrtdevicedescription12)[] | NNRt设备描述信息数组。 |
418
419**示例:**
420
421```ts
422let allDevices = mindSporeLite.getAllNNRTDeviceDescriptions();
423if (allDevices == null) {
424  console.error('MS_LITE_LOG: getAllNNRTDeviceDescriptions is NULL.');
425}
426```
427
428## Context
429
430定义运行环境的配置信息。
431
432### 属性
433
434**系统能力:** SystemCapability.AI.MindSporeLite
435
436
437| 名称   | 类型                      | 只读 | 可选 | 说明                                                         |
438| ------ | ------------------------- | ---- | ---- | ------------------------------------------------------------ |
439| target | string[]                  | 否   | 是   | 配置目标后端。可选'cpu','nnrt',默认'cpu'。                 |
440| cpu    | [CpuDevice](#cpudevice)   | 否   | 是   | CPU后端设备选项。只有当target包含'cpu'时,才能设置此属性。默认值为CpuDevice各属性默认值。 |
441| nnrt   | [NNRTDevice](#nnrtdevice) | 否   | 是   | NNRt后端设备选项。只有当target包含'nnrt'时,才能设置此属性。默认值为NNRTDevice各属性默认值。 |
442
443**示例:**
444
445```ts
446let context: mindSporeLite.Context = {};
447context.target = ['cpu','nnrt'];
448```
449
450## CpuDevice
451
452CPU后端设备选项。
453
454### 属性
455
456**系统能力:** SystemCapability.AI.MindSporeLite
457
458| 名称                   | 类型                                      | 只读 | 可选 | 说明                                                         |
459| ---------------------- | ----------------------------------------- | ---- | ---- | ------------------------------------------------------------ |
460| threadNum              | number                                    | 否   | 是   | 设置运行时的线程数,默认值:2。                              |
461| threadAffinityMode     | [ThreadAffinityMode](#threadaffinitymode) | 否   | 是   | 设置运行时的CPU绑核策略模式,默认值为不绑核:mindSporeLite.ThreadAffinityMode.NO_AFFINITIES。 |
462| threadAffinityCoreList | number[]                                  | 否   | 是   | 设置运行时的CPU绑核列表,设置绑核策略模式后使能,当绑核策略模式为mindSporeLite.ThreadAffinityMode.NO_AFFINITIES时,绑核列表为空。列表中的数字代表核的序号。默认值:[]。 |
463| precisionMode          | string                                    | 否   | 是   | 设置是否使能**Float16推理模式**,设置为'preferred_fp16'代表使能半精度推理,其余设置情况均为不支持,默认设置'enforce_fp32'表示不使能半精度推理。 |
464
465**Float16推理模式**:  Float16又称半精度,它使用16比特表示一个数。Float16推理模式表示推理的时候用半精度进行推理。
466
467**示例:**
468
469```ts
470let context: mindSporeLite.Context = {};
471context.cpu = {};
472context.target = ['cpu'];
473context.cpu.threadNum = 2;
474context.cpu.threadAffinityMode = 0;
475context.cpu.precisionMode = 'preferred_fp16';
476context.cpu.threadAffinityCoreList = [0, 1, 2];
477```
478
479## ThreadAffinityMode
480
481设置运行时的CPU绑核策略模式,有效值为0-2,0为默认不绑核,1为绑大核,2为绑中核。
482
483**系统能力:** SystemCapability.AI.MindSporeLite
484
485| 名称               | 值   | 说明         |
486| ------------------ | ---- | ------------ |
487| NO_AFFINITIES      | 0    | 不绑核。     |
488| BIG_CORES_FIRST    | 1    | 绑大核优先。 |
489| LITTLE_CORES_FIRST | 2    | 绑中核优先。 |
490
491## NNRTDevice
492
493Neural Network Runtime表示神经网络运行时,简称NNRt。作为中间桥梁,连通上层 AI 推理框架和底层加速芯片,实现 AI 模型的跨芯片推理计算。MindSpore Lite 可配置NNRt后端。
494
495### 属性
496
497**系统能力:** SystemCapability.AI.MindSporeLite
498
499| 名称                          | 类型                                | 只读 | 可选 | 说明                     |
500| ----------------------------- | ----------------------------------- | ---- | ------------------------ | ------------------------ |
501| deviceID<sup>12+</sup>        | bigint                              | 否 | 是  | NNRt设备ID。默认值为0。     |
502| performanceMode<sup>12+</sup> | [PerformanceMode](#performancemode12) | 否  | 是  | NNRt设备的工作性能模式。默认值为PERFORMANCE_NONE。 |
503| priority<sup>12+</sup>        | [Priority](#priority12)               | 否  | 是  | NNRt推理任务优先级。默认值为PRIORITY_MEDIUM。 |
504| extensions<sup>12+</sup>      | [Extension](#extension12)[]         | 否  | 是  | NNRt设备的扩展配置。默认为空。 |
505
506## PerformanceMode<sup>12+</sup>
507
508NNRt设备的工作性能模式枚举。
509
510**系统能力:** SystemCapability.AI.MindSporeLite
511
512| 名称                | 值   | 说明                |
513| ------------------- | ---- | ------------------- |
514| PERFORMANCE_NONE    | 0    | 无特殊设置。        |
515| PERFORMANCE_LOW     | 1    | 低功耗模式。        |
516| PERFORMANCE_MEDIUM  | 2    | 功耗-性能均衡模式。 |
517| PERFORMANCE_HIGH    | 3    | 高性能模式。        |
518| PERFORMANCE_EXTREME | 4    | 极致性能模式。      |
519
520## Priority<sup>12+</sup>
521
522NNRt推理任务优先级枚举。
523
524**系统能力:** SystemCapability.AI.MindSporeLite
525
526| 名称            | 值   | 说明           |
527| --------------- | ---- | -------------- |
528| PRIORITY_NONE   | 0    | 无优先级偏好。 |
529| PRIORITY_LOW    | 1    | 低优先级任务。 |
530| PRIORITY_MEDIUM | 2    | 中优先级任务。 |
531| PRIORITY_HIGH   | 3    | 高优先级任务。 |
532
533## Extension<sup>12+</sup>
534
535定义NNRt设备的扩展信息。
536
537### 属性
538
539**系统能力:** SystemCapability.AI.MindSporeLite
540
541| 名称                | 类型        | 只读 | 可选 | 说明             |
542| ------------------- | ----------- | ---- | ---- | ---------------- |
543| name<sup>12+</sup>  | string      | 否   | 否   | 扩展名称。       |
544| value<sup>12+</sup> | ArrayBuffer | 否   | 否   | 包含扩展的内存。 |
545
546## NNRTDeviceDescription<sup>12+</sup>
547
548NNRt设备信息描述,包含设备ID,设备名称等信息。
549
550**系统能力:** SystemCapability.AI.MindSporeLite
551
552### deviceID
553
554deviceID() : bigint
555
556获取NNRt设备ID。
557
558**系统能力:**  SystemCapability.AI.MindSporeLite
559
560**返回值:**
561
562| 类型   | 说明         |
563| ------ | ------------ |
564| bigint | NNRt设备ID。 |
565
566**示例:**
567
568```ts
569let allDevices = mindSporeLite.getAllNNRTDeviceDescriptions();
570if (allDevices == null) {
571  console.error('getAllNNRTDeviceDescriptions is NULL.');
572}
573let context: mindSporeLite.Context = {};
574context.target = ["nnrt"];
575context.nnrt = {};
576for (let i: number = 0; i < allDevices.length; i++) {
577  console.info(allDevices[i].deviceID().toString());
578}
579```
580
581### deviceType
582
583deviceType() : NNRTDeviceType
584
585获取NNRt设备类型。
586
587**系统能力:**  SystemCapability.AI.MindSporeLite
588
589**返回值:**
590
591| 类型                                | 说明           |
592| ----------------------------------- | -------------- |
593| [NNRTDeviceType](#nnrtdevicetype12) | NNRt设备类型。 |
594
595**示例:**
596
597```ts
598let allDevices = mindSporeLite.getAllNNRTDeviceDescriptions();
599if (allDevices == null) {
600  console.error('getAllNNRTDeviceDescriptions is NULL.');
601}
602let context: mindSporeLite.Context = {};
603context.target = ["nnrt"];
604context.nnrt = {};
605for (let i: number = 0; i < allDevices.length; i++) {
606  console.info(allDevices[i].deviceType().toString());
607}
608```
609
610### deviceName
611
612deviceName() : string
613
614获取NNRt设备名称。
615
616**系统能力:**  SystemCapability.AI.MindSporeLite
617
618**返回值:**
619
620| 类型   | 说明           |
621| ------ | -------------- |
622| string | NNRt设备名称。 |
623
624**示例:**
625
626```ts
627let allDevices = mindSporeLite.getAllNNRTDeviceDescriptions();
628if (allDevices == null) {
629  console.error('getAllNNRTDeviceDescriptions is NULL.');
630}
631let context: mindSporeLite.Context = {};
632context.target = ["nnrt"];
633context.nnrt = {};
634for (let i: number = 0; i < allDevices.length; i++) {
635  console.info(allDevices[i].deviceName().toString());
636}
637```
638
639## NNRTDeviceType<sup>12+</sup>
640
641NNRt设备类型枚举。
642
643**系统能力:** SystemCapability.AI.MindSporeLite
644
645| 名称                   | 值   | 说明                                |
646| ---------------------- | ---- | ----------------------------------- |
647| NNRTDEVICE_OTHERS      | 0    | 设备类型不属于以下3种,则属于其它。 |
648| NNRTDEVICE_CPU         | 1    | CPU设备。                           |
649| NNRTDEVICE_GPU         | 2    | GPU设备。                           |
650| NNRTDEVICE_ACCELERATOR | 3    | 特定的加速设备。                    |
651
652## TrainCfg<sup>12+</sup>
653
654端侧训练相关参数的配置文件。
655
656### 属性
657
658**系统能力:** SystemCapability.AI.MindSporeLite
659
660| 名称                            | 类型                                      | 只读 | 可选 | 说明                                                         |
661| ------------------------------- | ----------------------------------------- | ---- | ---- | ------------------------------------------------------------ |
662| lossName<sup>12+</sup>          | string[]                                  | 否   | 是   | 损失函数的名称列表。默认值为["loss_fct", "_loss_fn", "SigmoidCrossEntropy"]。 |
663| optimizationLevel<sup>12+</sup> | [OptimizationLevel](#optimizationlevel12) | 否   | 是   | 端侧训练的网络优化等级。默认值为O0。                         |
664
665**示例:**
666
667```ts
668let cfg: mindSporeLite.TrainCfg = {};
669cfg.lossName = ["loss_fct", "_loss_fn", "SigmoidCrossEntropy"];
670cfg.optimizationLevel = mindSporeLite.OptimizationLevel.O0;
671```
672
673## OptimizationLevel<sup>12+</sup>
674
675端侧训练的网络优化等级枚举。
676
677**系统能力:** SystemCapability.AI.MindSporeLite
678
679| 名称 | 值   | 说明                                                       |
680| ---- | ---- | ---------------------------------------------------------- |
681| O0   | 0    | 无优化等级。                                               |
682| O2   | 2    | 将网络转换为float16, 保持批量归一化层和损失函数为float32。 |
683| O3   | 3    | 将网络转换为float16, 包括批量归一化层。                    |
684| AUTO | 4    | 根据设备选择优化等级。                                     |
685
686
687## QuantizationType<sup>12+</sup>
688
689量化类型信息,有效值为0-2。
690
691**系统能力:** SystemCapability.AI.MindSporeLite
692
693| 名称         | 值   | 说明       |
694| ------------ | ---- | ---------- |
695| NO_QUANT     | 0    | 不做量化。 |
696| WEIGHT_QUANT | 1    | 权重量化。 |
697| FULL_QUANT   | 2    | 全量化。   |
698
699## Model
700
701模型实例。描述Model对象的属性和方法。
702
703下例API示例中都需先使用[loadModelFromFile()](#mindsporeliteloadmodelfromfile)、[loadModelFromBuffer()](#mindsporeliteloadmodelfrombuffer)、[loadModelFromFd()](#mindsporeliteloadmodelfromfd)中的任一方法获取到Model实例,再通过此实例调用对应方法。
704
705### 属性
706
707**系统能力:** SystemCapability.AI.MindSporeLite
708
709| 名称                       | 类型    | 只读 | 可选 | 说明                                                         |
710| -------------------------- | ------- | ---- | ---- | ------------------------------------------------------------ |
711| learningRate<sup>12+</sup> | number  | 否   | 是   | 训练模型的学习率。默认值从加载的模型中读取。                 |
712| trainMode<sup>12+</sup>    | boolean | 否   | 是   | 模型是否为训练模式。true表示训练模式,false表示非训练模式。如果是训练模型,trainMode默认是true;如果是推理模型,trainMode默认是false。 |
713
714### getInputs
715
716getInputs(): MSTensor[]
717
718获取模型的输入用于推理。
719
720**系统能力:**  SystemCapability.AI.MindSporeLite
721
722**返回值:**
723
724| 类型                    | 说明               |
725| ----------------------- | ------------------ |
726| [MSTensor](#mstensor)[] | 返回MSTensor对象。 |
727
728**示例:**
729
730```ts
731let modelFile = '/path/to/xxx.ms';
732mindSporeLite.loadModelFromFile(modelFile).then((mindSporeLiteModel : mindSporeLite.Model) => {
733  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
734  console.info(modelInputs[0].name);
735})
736```
737### predict
738
739predict(inputs: MSTensor[], callback: Callback&lt;MSTensor[]&gt;): void
740
741执行推理模型。使用callback异步回调。需要确保调用时模型对象不被资源回收。
742
743**系统能力:**  SystemCapability.AI.MindSporeLite
744
745**参数:**
746
747| 参数名 | 类型                    | 必填 | 说明                       |
748| ------ | ----------------------- | ---- | -------------------------- |
749| inputs | [MSTensor](#mstensor)[] | 是   | 模型的输入列表。MSTensor对象。 |
750| callback | Callback<[MSTensor](#mstensor)[]> | 是   | 回调函数。返回MSTensor对象。 |
751
752**示例:**
753
754```ts
755import { resourceManager } from '@kit.LocalizationKit';
756import { GlobalContext } from '../GlobalContext';
757import { mindSporeLite } from '@kit.MindSporeLiteKit';
758import { common } from '@kit.AbilityKit';
759export class Test {
760  value:number = 0;
761  foo(): void {
762    GlobalContext.getContext().setObject("value", this.value);
763  }
764}
765let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
766
767let inputName = 'input_data.bin';
768globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
769  let modelBuffer = buffer.buffer;
770  let modelFile : string = '/path/to/xxx.ms';
771  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(modelFile);
772  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
773
774  modelInputs[0].setData(modelBuffer);
775  mindSporeLiteModel.predict(modelInputs, (mindSporeLiteTensor : mindSporeLite.MSTensor[]) => {
776    let output = new Float32Array(mindSporeLiteTensor[0].getData());
777    for (let i = 0; i < output.length; i++) {
778      console.info(output[i].toString());
779    }
780  })
781})
782```
783### predict
784
785predict(inputs: MSTensor[]): Promise&lt;MSTensor[]&gt;
786
787执行推理模型,返回推理结果。使用Promise异步回调。需要确保调用时模型对象不被资源回收。
788
789**系统能力:**  SystemCapability.AI.MindSporeLite
790
791**参数:**
792
793| 参数名 | 类型                    | 必填 | 说明                           |
794| ------ | ----------------------- | ---- | ------------------------------ |
795| inputs | [MSTensor](#mstensor)[] | 是   | 模型的输入列表。MSTensor对象。 |
796
797**返回值:**
798
799| 类型                    | 说明                   |
800| ----------------------- | ---------------------- |
801| Promise<[MSTensor](#mstensor)[]> | Promise对象。返回MSTensor对象列表。 |
802
803**示例:**
804
805```ts
806import { resourceManager } from '@kit.LocalizationKit';
807import { GlobalContext } from '../GlobalContext';
808import { mindSporeLite } from '@kit.MindSporeLiteKit';
809import { common } from '@kit.AbilityKit';
810export class Test {
811    value:number = 0;
812    foo(): void {
813    GlobalContext.getContext().setObject("value", this.value);
814}
815}
816let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;;
817let inputName = 'input_data.bin';
818globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
819  let modelBuffer = buffer.buffer;
820  let modelFile = '/path/to/xxx.ms';
821  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(modelFile);
822  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
823  modelInputs[0].setData(modelBuffer);
824  mindSporeLiteModel.predict(modelInputs).then((mindSporeLiteTensor : mindSporeLite.MSTensor[]) => {
825    let output = new Float32Array(mindSporeLiteTensor[0].getData());
826    for (let i = 0; i < output.length; i++) {
827      console.info(output[i].toString());
828    }
829  })
830})
831```
832
833### resize
834
835resize(inputs: MSTensor[], dims: Array&lt;Array&lt;number&gt;&gt;): boolean
836
837重新设置张量大小。
838
839**系统能力:**  SystemCapability.AI.MindSporeLite
840
841**参数:**
842
843| 参数名 | 类型                  | 必填 | 说明                          |
844| ------ | --------------------- | ---- | ----------------------------- |
845| inputs | [MSTensor](#mstensor)[]            | 是   | 模型的输入列表。  |
846| dims   | Array&lt;Array&lt;number&gt;&gt; | 是   | 需要修改的目标张量大小。 |
847
848**返回值:**
849
850| 类型    | 说明                                                         |
851| ------- | ------------------------------------------------------------ |
852| boolean | 返回是否设置成功的结果。true表示重新设置张量大小成功;false表示重新设置张量大小失败。 |
853
854**示例:**
855
856```ts
857let modelFile = '/path/to/xxx.ms';
858mindSporeLite.loadModelFromFile(modelFile).then((mindSporeLiteModel : mindSporeLite.Model) => {
859  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
860  let new_dim = new Array([1,32,32,1]);
861  mindSporeLiteModel.resize(modelInputs, new_dim);
862})
863```
864
865### runStep<sup>12+</sup>
866
867runStep(inputs: MSTensor[]): boolean
868
869单步训练模型,仅用于端侧训练。
870
871**系统能力:** SystemCapability.AI.MindSporeLite
872
873**参数:**
874
875| 参数名    | 类型                      | 必填  | 说明       |
876| ------ | ----------------------- | --- | -------- |
877| inputs | [MSTensor](#mstensor)[] | 是   | 模型的输入列表。 |
878
879**返回值:**
880
881| 类型    | 说明                                                         |
882| ------- | ------------------------------------------------------------ |
883| boolean | 返回单步训练模型是否成功的结果。true表示单步训练模型成功,false表示单步训练模型失败。 |
884
885**示例:**
886
887```ts
888let modelFile = '/path/to/xxx.ms';
889mindSporeLite.loadTrainModelFromFile(modelFile).then((mindSporeLiteModel: mindSporeLite.Model) => {
890  mindSporeLiteModel.trainMode = true;
891  const modelInputs = mindSporeLiteModel.getInputs();
892  let ret = mindSporeLiteModel.runStep(modelInputs);
893  if (ret == false) {
894    console.error('MS_LITE_LOG: runStep failed.')
895  }
896})
897```
898
899### getWeights<sup>12+</sup>
900
901getWeights(): MSTensor[]
902
903获取模型的所有权重,仅用于端侧训练。
904
905**系统能力:** SystemCapability.AI.MindSporeLite
906
907**返回值:**
908
909| 类型                      | 说明         |
910| ----------------------- | ---------- |
911| [MSTensor](#mstensor)[] | 返回模型的权重张量。 |
912
913**示例:**
914
915```ts
916import { resourceManager } from '@kit.LocalizationKit';
917
918let resMgr: resourceManager.ResourceManager = getContext().getApplicationContext().resourceManager;
919let modelFile = 'xxx.ms';
920resMgr.getRawFileContent(modelFile).then((modelBuffer) => {
921  mindSporeLite.loadTrainModelFromBuffer(modelBuffer.buffer.slice(0)).then((mindSporeLiteModel: mindSporeLite.Model) => {
922    mindSporeLiteModel.trainMode = true;
923    const weights = mindSporeLiteModel.getWeights();
924    for (let i = 0; i < weights.length; i++) {
925      let printStr = weights[i].name + ", ";
926      printStr += weights[i].shape + ", ";
927      printStr += weights[i].dtype + ", ";
928      printStr += weights[i].dataSize + ", ";
929      printStr += weights[i].getData();
930      console.info("MS_LITE weights: ", printStr);
931    }
932  })
933})
934```
935
936### updateWeights<sup>12+</sup>
937
938updateWeights(weights: MSTensor[]): boolean
939
940更新模型的权重,仅用于端侧训练。
941
942**系统能力:** SystemCapability.AI.MindSporeLite
943
944**参数:**
945
946| 参数名  | 类型                    | 必填 | 说明           |
947| ------- | ----------------------- | ---- | -------------- |
948| weights | [MSTensor](#mstensor)[] | 是   | 权重张量列表。 |
949
950**返回值:**
951
952| 类型    | 说明                                                         |
953| ------- | ------------------------------------------------------------ |
954| boolean | 返回是否更新权重成功的结果。true表示更新权重成功,false表示更新权重失败。 |
955
956**示例:**
957
958```ts
959import { resourceManager } from '@kit.LocalizationKit';
960
961let resMgr: resourceManager.ResourceManager = getContext().getApplicationContext().resourceManager;
962let modelFile = 'xxx.ms';
963resMgr.getRawFileContent(modelFile).then((modelBuffer) => {
964  mindSporeLite.loadTrainModelFromBuffer(modelBuffer.buffer.slice(0)).then((mindSporeLiteModel: mindSporeLite.Model) => {
965    mindSporeLiteModel.trainMode = true;
966    const weights = mindSporeLiteModel.getWeights();
967    let ret = mindSporeLiteModel.updateWeights(weights);
968    if (ret == false) {
969      console.error('MS_LITE_LOG: updateWeights failed.')
970    }
971  })
972})
973```
974
975### setupVirtualBatch<sup>12+</sup>
976
977setupVirtualBatch(virtualBatchMultiplier: number, lr: number, momentum: number): boolean
978
979设置虚拟批次用于训练,仅用于端侧训练。
980
981**系统能力:** SystemCapability.AI.MindSporeLite
982
983**参数:**
984
985| 参数名                 | 类型   | 必填 | 说明                                                 |
986| ---------------------- | ------ | ---- | ---------------------------------------------------- |
987| virtualBatchMultiplier | number | 是   | 虚拟批次乘法器,当设置值小于1时,表示禁用虚拟batch。 |
988| lr                     | number | 是   | 学习率。                                             |
989| momentum               | number | 是   | 动量。                                               |
990
991**返回值:**
992
993| 类型    | 说明                                                         |
994| ------- | ------------------------------------------------------------ |
995| boolean | 返回是否设置虚拟批次成功的结果。true表示设置虚拟批次成功,false表示设置虚拟批次失败。 |
996
997**示例:**
998
999```ts
1000import { resourceManager } from '@kit.LocalizationKit';
1001
1002let resMgr: resourceManager.ResourceManager = getContext().getApplicationContext().resourceManager;
1003let modelFile = 'xxx.ms';
1004resMgr.getRawFileContent(modelFile).then((modelBuffer) => {
1005  mindSporeLite.loadTrainModelFromBuffer(modelBuffer.buffer.slice(0)).then((mindSporeLiteModel: mindSporeLite.Model) => {
1006    mindSporeLiteModel.trainMode = true;
1007    let ret = mindSporeLiteModel.setupVirtualBatch(2,-1,-1);
1008    if (ret == false) {
1009      console.error('MS_LITE setupVirtualBatch failed.')
1010    }
1011  })
1012})
1013```
1014
1015### exportModel<sup>12+</sup>
1016
1017exportModel(modelFile: string, quantizationType?: QuantizationType, exportInferenceOnly?: boolean, outputTensorName?: string[]): boolean
1018
1019导出训练模型,仅用于端侧训练。
1020
1021**系统能力:** SystemCapability.AI.MindSporeLite
1022
1023**参数:**
1024
1025| 参数名              | 类型                                    | 必填 | 说明                                                         |
1026| ------------------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
1027| modelFile           | string                                  | 是   | 导出模型的文件路径。                                         |
1028| quantizationType    | [QuantizationType](#quantizationtype12) | 否   | 量化类型,默认为NO_QUANT。                                   |
1029| exportInferenceOnly | boolean                                 | 否   | 是否只导出推理模型。true表示只导出推理模型,false表示导出训练和推理两个模型。默认为true。 |
1030| outputTensorName    | string[]                                | 否   | 设置导出模型的输出张量的名称。默认为空字符串数组,表示全量导出。 |
1031
1032**返回值:**
1033
1034| 类型    | 说明                                                         |
1035| ------- | ------------------------------------------------------------ |
1036| boolean | 返回是否导出训练模型成功的结果。true表示导出训练模型成功,false表示导出训练模型失败。 |
1037
1038**示例:**
1039
1040```ts
1041let modelFile = '/path/to/xxx.ms';
1042let newPath = '/newpath/to';
1043mindSporeLite.loadTrainModelFromFile(modelFile).then((mindSporeLiteModel: mindSporeLite.Model) => {
1044  mindSporeLiteModel.trainMode = true;
1045  let ret = mindSporeLiteModel.exportModel(newPath + "/new_model.ms", mindSporeLite.QuantizationType.NO_QUANT, true);
1046  if (ret == false) {
1047    console.error('MS_LITE exportModel failed.')
1048  }
1049})
1050```
1051
1052
1053### exportWeightsCollaborateWithMicro<sup>12+</sup>
1054
1055exportWeightsCollaborateWithMicro(weightFile: string, isInference?: boolean, enableFp16?: boolean, changeableWeightsName?: string[]): boolean;
1056
1057导出供**micro推理**使用的模型权重,仅用于端侧训练。
1058
1059**micro推理**:MindSpore Lite针对MCUs(MicroControllerUnits)部署硬件后端,提供了一种超轻量Micro AI部署解决方案,离线阶段直接将模型生成轻量化代码,不再需要在线解析模型和图编译。
1060
1061**系统能力:** SystemCapability.AI.MindSporeLite
1062
1063**参数:**
1064
1065| 参数名                | 类型     | 必填 | 说明                                                         |
1066| --------------------- | -------- | ---- | ------------------------------------------------------------ |
1067| weightFile            | string   | 是   | 权重文件路径。                                               |
1068| isInference           | boolean  | 否   | 是否从推理模型中导出权重。true表示从推理模型中导出权重,目前只支持`true`,默认为true。 |
1069| enableFp16            | boolean  | 否   | 浮点权重是否以float16格式保存。true表示以float16格式保存,false表示不以float16格式保存。默认为false。 |
1070| changeableWeightsName | string[] | 否   | 设置可变权重的名称。默认为空字符串数组。                     |
1071
1072**返回值:**
1073
1074| 类型    | 说明                                                         |
1075| ------- | ------------------------------------------------------------ |
1076| boolean | 返回是否导出供micro推理使用的模型权重成功的结果。true表示导出供micro推理使用的模型权重成功,false表示导出供micro推理使用的模型权重失败。 |
1077
1078**示例:**
1079
1080```ts
1081let modelFile = '/path/to/xxx.ms';
1082let microWeight = '/path/to/xxx.bin';
1083mindSporeLite.loadTrainModelFromFile(modelFile).then((mindSporeLiteModel: mindSporeLite.Model) => {
1084  let ret = mindSporeLiteModel.exportWeightsCollaborateWithMicro(microWeight);
1085  if (ret == false) {
1086    console.error('MSLITE exportWeightsCollaborateWithMicro failed.')
1087  }
1088})
1089```
1090
1091## MSTensor
1092
1093模型张量实例。描述MSTensor对象的属性和方法。它与数组和矩阵非常相似,是MindSpore Lite网络运算中的基本数据结构。
1094
1095下例API示例中都需先使用[getInputs()](#getinputs)获取到MSTensor实例,再通过此实例调用对应方法。
1096
1097### 属性
1098
1099**系统能力:**  SystemCapability.AI.MindSporeLite
1100
1101| 名称       | 类型                  | 只读 | 可选 | 说明                   |
1102| ---------- | --------------------- | ---- | ---- | ---------------------- |
1103| name       | string                | 否   | 否   | 张量的名称。           |
1104| shape      | number[]              | 否   | 否   | 张量的维度数组。       |
1105| elementNum | number                | 否   | 否   | 张量的维度数组的长度。 |
1106| dataSize   | number                | 否   | 否   | 张量的数据的长度。     |
1107| dtype      | [DataType](#datatype) | 否   | 否   | 张量的数据类型。       |
1108| format     | [Format](#format)     | 否   | 否   | 张量的数据排布方式。   |
1109
1110**示例:**
1111
1112```ts
1113let modelFile = '/path/to/xxx.ms';
1114mindSporeLite.loadModelFromFile(modelFile).then((mindSporeLiteModel : mindSporeLite.Model) => {
1115  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
1116  console.info(modelInputs[0].name);
1117  console.info(modelInputs[0].shape.toString());
1118  console.info(modelInputs[0].elementNum.toString());
1119  console.info(modelInputs[0].dtype.toString());
1120  console.info(modelInputs[0].format.toString());
1121  console.info(modelInputs[0].dataSize.toString());
1122})
1123```
1124
1125### getData
1126
1127getData(): ArrayBuffer
1128
1129获取张量的数据。
1130
1131**系统能力:** SystemCapability.AI.MindSporeLite
1132
1133**返回值:**
1134
1135| 类型        | 说明                 |
1136| ----------- | -------------------- |
1137| ArrayBuffer | 返回张量的数据指针。 |
1138
1139**示例:**
1140
1141```ts
1142import { resourceManager } from '@kit.LocalizationKit';
1143import { GlobalContext } from '../GlobalContext';
1144import { mindSporeLite } from '@kit.MindSporeLiteKit';
1145import { common } from '@kit.AbilityKit';
1146export class Test {
1147  value:number = 0;
1148  foo(): void {
1149    GlobalContext.getContext().setObject("value", this.value);
1150  }
1151}
1152let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
1153let inputName = 'input_data.bin';
1154globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
1155  let inputBuffer = buffer.buffer;
1156  let modelFile = '/path/to/xxx.ms';
1157  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(modelFile);
1158  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
1159  modelInputs[0].setData(inputBuffer);
1160  mindSporeLiteModel.predict(modelInputs).then((mindSporeLiteTensor : mindSporeLite.MSTensor[]) => {
1161    let output = new Float32Array(mindSporeLiteTensor[0].getData());
1162    for (let i = 0; i < output.length; i++) {
1163      console.info(output[i].toString());
1164    }
1165  })
1166})
1167```
1168
1169### setData
1170
1171setData(inputArray: ArrayBuffer): void
1172
1173设置张量的数据。
1174
1175**系统能力:** SystemCapability.AI.MindSporeLite
1176
1177**参数:**
1178
1179| 参数名     | 类型        | 必填 | 说明                   |
1180| ---------- | ----------- | ---- | ---------------------- |
1181| inputArray | ArrayBuffer | 是   | 张量的输入数据缓冲区。 |
1182
1183**示例:**
1184
1185```ts
1186import { resourceManager } from '@kit.LocalizationKit';
1187import { GlobalContext } from '../GlobalContext';
1188import { mindSporeLite } from '@kit.MindSporeLiteKit';
1189import { common } from '@kit.AbilityKit';
1190export class Test {
1191  value:number = 0;
1192  foo(): void {
1193    GlobalContext.getContext().setObject("value", this.value);
1194  }
1195}
1196let globalContext = GlobalContext.getContext().getObject("value") as common.UIAbilityContext;
1197let inputName = 'input_data.bin';
1198globalContext.resourceManager.getRawFileContent(inputName).then(async (buffer : Uint8Array) => {
1199  let inputBuffer = buffer.buffer;
1200  let modelFile = '/path/to/xxx.ms';
1201  let mindSporeLiteModel : mindSporeLite.Model = await mindSporeLite.loadModelFromFile(modelFile);
1202  let modelInputs : mindSporeLite.MSTensor[] = mindSporeLiteModel.getInputs();
1203  modelInputs[0].setData(inputBuffer);
1204})
1205```
1206
1207## DataType
1208
1209张量的数据类型。
1210
1211**系统能力:** SystemCapability.AI.MindSporeLite
1212
1213| 名称                | 值   | 说明                |
1214| ------------------- | ---- | ------------------- |
1215| TYPE_UNKNOWN        | 0    | 未知类型。          |
1216| NUMBER_TYPE_INT8    | 32   | 保持Int8的类型。    |
1217| NUMBER_TYPE_INT16   | 33   | 保持Int16的类型。   |
1218| NUMBER_TYPE_INT32   | 34   | 保持Int32的类型。   |
1219| NUMBER_TYPE_INT64   | 35   | 保持Int64的类型。   |
1220| NUMBER_TYPE_UINT8   | 37   | 保持UInt8的类型。   |
1221| NUMBER_TYPE_UINT16  | 38   | 保持UInt16的类型。  |
1222| NUMBER_TYPE_UINT32  | 39   | 保持UInt32的类型。  |
1223| NUMBER_TYPE_UINT64  | 40   | 保持UInt64的类型。  |
1224| NUMBER_TYPE_FLOAT16 | 42   | 保持Float16的类型。 |
1225| NUMBER_TYPE_FLOAT32 | 43   | 保持Float32的类型。 |
1226| NUMBER_TYPE_FLOAT64 | 44   | 保持Float64的类型。 |
1227
1228## Format
1229
1230张量的数据排布方式。
1231
1232**系统能力:** SystemCapability.AI.MindSporeLite
1233
1234| 名称           | 值   | 说明                  |
1235| -------------- | ---- | --------------------- |
1236| DEFAULT_FORMAT | -1   | 未知数据排布方式。    |
1237| NCHW           | 0    | 数据排布方式为NCHW。  |
1238| NHWC           | 1    | 数据排布方式为NHWC。  |
1239| NHWC4          | 2    | 数据排布方式为NHWC4。 |
1240| HWKC           | 3    | 数据排布方式为HWKC。  |
1241| HWCK           | 4    | 数据排布方式为HWCK。  |
1242| KCHW           | 5    | 数据排布方式为KCHW。  |
1243