ANeuralNetworksOperandType
ANeuralNetworksOperandType 描述操作数的类型。
摘要
此结构体用于描述标量和张量。
所有维度均已指定的张量操作数类型称为“完全指定”。在可能的情况下(即在模型构建时知道维度的情况下),张量操作数类型应(但不强制要求)完全指定,以便实现最佳性能。
如果张量操作数的类型未完全指定,则该操作数的维度会从其作为输出的操作的操作数类型和值推导得出,或者对于引用模型输入操作数,会从相应的 ANEURALNETWORKS_IF 或 ANEURALNETWORKS_WHILE 操作的输入操作数类型推导得出。
在以下情况中,张量操作数类型必须完全指定
- 操作数具有通过 ANeuralNetworksModel_setOperandValue(使用非 nullptr 缓冲区)或 ANeuralNetworksModel_setOperandValueFromMemory 设置的常量值。
- 操作数是编译中主模型的模型输入(请参阅 ANeuralNetworksModel_identifyInputsAndOutputs)。必须向 ANeuralNetworksModel_addOperand 提供完全指定的张量操作数类型;或者必须向相应的 ANeuralNetworksExecution_setInput 或 ANeuralNetworksExecution_setInputFromMemory 提供。例外:如果输入是可选且被忽略(通过将 nullptr 作为缓冲区传递给 ANeuralNetworksExecution_setInput),则它不必具有完全指定的张量操作数类型。
- 操作数是编译中主模型的模型输出(请参阅 ANeuralNetworksModel_identifyInputsAndOutputs),并且将与 ANeuralNetworksExecution_startComputeWithDependencies 一起使用。必须向 ANeuralNetworksModel_addOperand 提供完全指定的张量操作数类型;或者必须向相应的 ANeuralNetworksExecution_setOutput 或 ANeuralNetworksExecution_setOutputFromMemory 提供。
指定了秩但部分维度未指定的张量操作数类型通过将 dimensionCount 设置为秩,并将每个未指定的维度设置为 0 来表示。
自 NNAPI 功能级别 1 起可用。
从 NNAPI 功能级别 3 开始,未指定秩的张量操作数类型通过将 dimensionCount 设置为 0 并将 dimensions 设置为 NULL 来表示(就像是标量操作数类型一样)。
公共属性 |
|
---|---|
dimensionCount
|
uint32_t
维数(秩)。
|
dimensions
|
const uint32_t *
张量的维度。
|
scale
|
float
量化比例。
|
type
|
int32_t
数据类型,例如 ANEURALNETWORKS_FLOAT32。
|
zeroPoint
|
int32_t
量化零点。
|
公共属性
dimensionCount
声明于android/NeuralNetworksTypes.h
uint32_t ANeuralNetworksOperandType::dimensionCount
维数(秩)。
对于标量,必须为 0。
dimensions
声明于android/NeuralNetworksTypes.h
const uint32_t * ANeuralNetworksOperandType::dimensions
张量的维度。
对于标量,必须为 nullptr。
scale
声明于android/NeuralNetworksTypes.h
float ANeuralNetworksOperandType::scale
type
声明于android/NeuralNetworksTypes.h
int32_t ANeuralNetworksOperandType::type
数据类型,例如 ANEURALNETWORKS_FLOAT32。
zeroPoint
声明于android/NeuralNetworksTypes.h
int32_t ANeuralNetworksOperandType::zeroPoint