Tensor

公共接口 Tensor

在 TensorFlow Lite 中使用的类型化多维数组。

Tensor 的原生句柄由 NativeInterpreterWrapper 管理,并且不需要由客户端关闭。不过,一旦 NativeInterpreterWrapper 关闭,张量句柄便会失效。

嵌套类

类别 Tensor.QuantizationParams TFLite 模型架构文件 中的表 QuantizationParameters 对应的量化参数。

公共方法

abstract ByteBuffer
asReadOnlyBuffer()
返回张量数据的只读 ByteBuffer 视图。
abstract DataType
dataType()
返回存储在张量中的元素的 DataType
abstract int
numBytes()
返回张量数据的大小(以字节为单位)。
abstract int
numDimensions()
返回张量的维度数(有时称为)。
abstract int
numElements()
返回张量的扁平 (1-D) 视图中的元素数。
abstract Tensor.QuantizationParams
quantizationParams()
返回所属解释器中张量的量化参数。
abstract int[]
shape()
返回张量的形状,即每个维度的大小。
abstract int[]
shapeSignature()
在执行任何调整大小之前,返回张量的原始形状,即每个维度的大小。

公共方法

public abstract ByteBuffer asReadOnlyBuffer ()

返回张量数据的只读 ByteBuffer 视图。

一般来说,此方法最适合在执行推理*之后* 获取输出张量数据的只读视图。特别是,某些图具有动态形状的输出,这可能会使将预定义的输出缓冲区提供给解释器变得很尴尬。InterpreterApi.run(Object, Object)用法示例:

 interpreter.run(input, null);
 ByteBuffer outputBuffer = interpreter.getOutputTensor(0).asReadOnlyBuffer();
 // Copy or read from outputBuffer.

警告:如果尚未分配张量(例如,在执行推断之前),则结果是未定义的。请注意,当张量失效时(例如,如果执行推断或图表大小调整),底层张量指针也可能会发生变化,因此在推理之后直接使用返回的缓冲区 *不安全*。*错误* 用法示例:

 ByteBuffer outputBuffer = interpreter.getOutputTensor(0).asReadOnlyBuffer();
 interpreter.run(input, null);
 // Copy or read from outputBuffer (which may now be invalid).

抛出
IllegalArgumentException (如果尚未分配张量数据)。

public abstract DataType dataType ()

返回存储在张量中的元素的 DataType

public abstract int numBytes ()

返回张量数据的大小(以字节为单位)。

public abstract int numDimensions ()

返回张量的维度数(有时称为)。

为 0 表示标量,1 表示向量,2 表示矩阵,3 表示三维张量,等等。

public abstract int numElements ()

返回张量的扁平 (1-D) 视图中的元素数量。

public abstract Tensor.QuantizationParams quantizationParams ()

返回所属解释器中张量的量化参数。

只有量化张量具有有效的 QuantizationParameters。对于未量化的张量,scale 和 zero_point 的值均为 0。

public abstract int[] shape ()

返回张量的形状,即每个维度的大小。

返回
  • 第 i 个元素是张量的第 i 个维度的大小的数组。

public abstract int[] shapeSignature ()

在执行任何调整大小之前,返回张量的原始形状,即每个维度的大小。未知维度的值为 -1。

返回
  • 第 i 个元素是张量的第 i 个维度的大小的数组。