类 OnnxTensor
- java.lang.Object
-
- ai.onnxruntime.OnnxTensorLike
-
- ai.onnxruntime.OnnxTensor
-
- 所有已实现的接口
OnnxValue,java.lang.AutoCloseable
public class OnnxTensor extends OnnxTensorLike
封装 OnnxTensor 的 Java 对象。张量(Tensor)是该库的主要输入,也可以作为输出返回。
-
-
嵌套类概要
-
从接口 ai.onnxruntime.OnnxValue 继承的嵌套类/接口
OnnxValue.OnnxValueType
-
-
字段概要
-
从类 ai.onnxruntime.OnnxTensorLike 继承的字段
allocatorHandle, closed, info, nativeHandle
-
-
方法概要
所有方法 静态方法 实例方法 具体方法 限定符和类型 方法 描述 voidclose()关闭张量,释放其底层内存(如果它不是由 NIO 缓冲区支持的)。static OnnxTensorcreateTensor(OrtEnvironment env, java.lang.Object data)从 Java 基本类型、基本类型多维数组或字符串多维数组创建张量。static OnnxTensorcreateTensor(OrtEnvironment env, java.lang.String[] data, long[] shape)从扁平化字符串数组创建张量。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.ByteBuffer data, long[] shape)创建由直接 ByteBuffer 支持的 OnnxTensor。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.ByteBuffer data, long[] shape, OnnxJavaType type)创建由直接 ByteBuffer 支持的 OnnxTensor。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.DoubleBuffer data, long[] shape)创建由直接 DoubleBuffer 支持的 OnnxTensor。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.FloatBuffer data, long[] shape)创建由直接 FloatBuffer 支持的 OnnxTensor。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.IntBuffer data, long[] shape)创建由直接 IntBuffer 支持的 OnnxTensor。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.LongBuffer data, long[] shape)创建由直接 LongBuffer 支持的 OnnxTensor。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.ShortBuffer data, long[] shape)创建由直接 ShortBuffer 支持的 OnnxTensor。static OnnxTensorcreateTensor(OrtEnvironment env, java.nio.ShortBuffer data, long[] shape, OnnxJavaType type)创建由直接 ShortBuffer 支持的 OnnxTensor。java.util.Optional<java.nio.Buffer>getBufferRef()返回支持此OnnxTensor的缓冲区引用。java.nio.ByteBuffergetByteBuffer()将底层 OnnxTensor 作为 ByteBuffer 返回副本。java.nio.DoubleBuffergetDoubleBuffer()如果底层类型是 double,则将底层 OnnxTensor 作为 DoubleBuffer 返回副本,否则返回 null。java.nio.FloatBuffergetFloatBuffer()如果底层 OnnxTensor 可以无损转换为 float(即 float、fp16 或 bf16),则将其作为 FloatBuffer 返回副本,否则返回 null。java.nio.IntBuffergetIntBuffer()如果底层类型是 int32 或 uint32,则将底层 OnnxTensor 作为 IntBuffer 返回副本,否则返回 null。java.nio.LongBuffergetLongBuffer()如果底层类型是 int64 或 uint64,则将底层 OnnxTensor 作为 LongBuffer 返回副本,否则返回 null。java.nio.ShortBuffergetShortBuffer()如果底层类型是 int16、uint16、fp16 或 bf16,则将底层 OnnxTensor 作为 ShortBuffer 返回副本,否则返回 null。OnnxValue.OnnxValueTypegetType()获取此 OnnxValue 的类型。java.lang.ObjectgetValue()如果张量是标量,则返回装箱后的基本类型;如果具有多个维度,则返回基本类型的多维数组。booleanownsBuffer()如果此 OnnxTensor 中的缓冲区是在构造此张量时创建的(即,它是用户提供的缓冲区或数组的副本,且可能持有该缓冲区的唯一引用),则返回 true。java.lang.StringtoString()-
从类 ai.onnxruntime.OnnxTensorLike 继承的方法
checkClosed, getInfo, isClosed
-
-
-
-
方法详细信息
-
ownsBuffer
public boolean ownsBuffer()
如果此 OnnxTensor 中的缓冲区是在构造此张量时创建的(即,它是用户提供的缓冲区或数组的副本,且可能持有该缓冲区的唯一引用),则返回 true。当此值为 true 时,后备缓冲区是从用户输入复制的,因此用户在未通过
getBufferRef()获取引用之前,无法更改此缓冲区的状态。- 返回值
- 如果此 OnnxTensor 中的缓冲区是由其在构造时分配的(即,它是用户缓冲区或数组的副本),则为 true。
-
getBufferRef
public java.util.Optional<java.nio.Buffer> getBufferRef()
返回支持此OnnxTensor的缓冲区引用。如果张量不是由缓冲区支持(即由 ORT 分配的内存支持),则此方法返回空的Optional。对缓冲区元素的更改将反映在原生的
OrtValue中,这可用于重复更新单个张量以进行多次不同的推理,而无需分配新的张量,但输入内容必须保持相同的大小和形状。注意:张量可能指向此缓冲区中的连续元素范围,而非整个缓冲区。用户需负责通过遵守位置(position)和界限(limit)来管理此信息。因此,当多个线程持有缓冲区引用时,访问此引用应被视为存在潜在问题。
- 返回值
- 缓冲区的引用。
-
getType
public OnnxValue.OnnxValueType getType()
从接口复制的描述:OnnxValue获取此 OnnxValue 的类型。- 返回值
- 值类型。
-
getValue
public java.lang.Object getValue() throws OrtException如果张量是标量,则返回装箱后的基本类型;如果具有多个维度,则返回基本类型的多维数组。Java 多维数组在超过 2 个维度时速度很慢,在这种情况下,建议您使用下方的
Buffer提取器(例如,getFloatBuffer())。- 返回值
- Java 值。
- 抛出
OrtException- 如果因为张量无效而无法提取值,或者原生代码遇到错误。
-
toString
public java.lang.String toString()
- 重写
toStringin classjava.lang.Object
-
close
public void close()
关闭张量,释放其底层内存(如果它不是由 NIO 缓冲区支持的)。如果它由缓冲区支持,则内存将在缓冲区被 GC(垃圾回收)时释放。
-
getByteBuffer
public java.nio.ByteBuffer getByteBuffer()
将底层 OnnxTensor 作为 ByteBuffer 返回副本。如果 OnnxTensor 包含字符串,此方法返回 null,因为字符串存储在 OnnxTensor 外部。
- 返回值
- OnnxTensor 的 ByteBuffer 副本。
-
getFloatBuffer
public java.nio.FloatBuffer getFloatBuffer()
如果底层 OnnxTensor 可以无损转换为 float(即 float、fp16 或 bf16),则将其作为 FloatBuffer 返回副本,否则返回 null。- 返回值
- OnnxTensor 的 FloatBuffer 副本。
-
getDoubleBuffer
public java.nio.DoubleBuffer getDoubleBuffer()
如果底层类型是 double,则将底层 OnnxTensor 作为 DoubleBuffer 返回副本,否则返回 null。- 返回值
- OnnxTensor 的 DoubleBuffer 副本。
-
getShortBuffer
public java.nio.ShortBuffer getShortBuffer()
如果底层类型是 int16、uint16、fp16 或 bf16,则将底层 OnnxTensor 作为 ShortBuffer 返回副本,否则返回 null。- 返回值
- OnnxTensor 的 ShortBuffer 副本。
-
getIntBuffer
public java.nio.IntBuffer getIntBuffer()
如果底层类型是 int32 或 uint32,则将底层 OnnxTensor 作为 IntBuffer 返回副本,否则返回 null。- 返回值
- OnnxTensor 的 IntBuffer 副本。
-
getLongBuffer
public java.nio.LongBuffer getLongBuffer()
如果底层类型是 int64 或 uint64,则将底层 OnnxTensor 作为 LongBuffer 返回副本,否则返回 null。- 返回值
- OnnxTensor 的 LongBuffer 副本。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.lang.Object data) throws OrtException
从 Java 基本类型、基本类型多维数组或字符串多维数组创建张量。形状通过反射从对象中推断出来。使用默认分配器。注意:Java 多维数组不是紧凑的,此方法在处理高维数组时需要遍历大量的指针。对于除字符串以外的类型,建议使用接受
Buffer的createTensor方法之一,例如createTensor(OrtEnvironment, FloatBuffer, long[]),因为在使用直接缓冲区时,这些方法在将数据传输到 ORT 时是零拷贝的。- 参数
env- 当前的 OrtEnvironment。data- 要存储在张量中的数据。- 返回值
- 存储数据的 OnnxTensor。
- 抛出
OrtException- 如果 onnx 运行时抛出错误。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.lang.String[] data, long[] shape) throws OrtException
从扁平化字符串数组创建张量。要求数组以行优先顺序扁平化。使用默认分配器。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据shape- 张量的形状- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.FloatBuffer data, long[] shape) throws OrtException
创建由直接 FloatBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.DoubleBuffer data, long[] shape) throws OrtException
创建由直接 DoubleBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.ByteBuffer data, long[] shape) throws OrtException
创建由直接 ByteBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。告知运行时它是
OnnxJavaType.INT8。- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.ByteBuffer data, long[] shape, OnnxJavaType type) throws OrtException
创建由直接 ByteBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。告知运行时它是指定的类型。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。type- 用于字节缓冲区元素的类型。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.ShortBuffer data, long[] shape) throws OrtException
创建由直接 ShortBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.ShortBuffer data, long[] shape, OnnxJavaType type) throws OrtException
创建由直接 ShortBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。type- 缓冲区中数据的类型,可以是OnnxJavaType.INT16、OnnxJavaType.FLOAT16或OnnxJavaType.BFLOAT16。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.IntBuffer data, long[] shape) throws OrtException
创建由直接 IntBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
createTensor
public static OnnxTensor createTensor(OrtEnvironment env, java.nio.LongBuffer data, long[] shape) throws OrtException
创建由直接 LongBuffer 支持的 OnnxTensor。缓冲区应为 nativeOrder。如果提供的缓冲区不是直接缓冲区,则会创建一个绑定到张量生命周期的直接副本。使用默认分配器。
- 参数
env- 当前的 OrtEnvironment。data- 张量数据。shape- 张量的形状。- 返回值
- 所需形状的 OnnxTensor。
- 抛出
OrtException- 如果发生 onnx 错误,或者数据和形状不匹配,则抛出此异常。
-
-