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