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<Model>): 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<Model> 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<Model>): 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<Model>): 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<Model> 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<Model>): 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<Model>): 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<Model> 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<Model> 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<Model> 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<Model> 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<MSTensor[]>): 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<MSTensor[]> 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<Array<number>>): boolean 836 837重新设置张量大小。 838 839**系统能力:** SystemCapability.AI.MindSporeLite 840 841**参数:** 842 843| 参数名 | 类型 | 必填 | 说明 | 844| ------ | --------------------- | ---- | ----------------------------- | 845| inputs | [MSTensor](#mstensor)[] | 是 | 模型的输入列表。 | 846| dims | Array<Array<number>> | 是 | 需要修改的目标张量大小。 | 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