类 OnnxTensor
- java.lang.Object
-
- ai.onnxruntime.OnnxTensorLike
-
- ai.onnxruntime.OnnxTensor
-
- 所有已实现的接口
OnnxValue
,java.lang.AutoCloseable
public class OnnxTensor extends OnnxTensorLike
一个包装 OnnxTensor 的 Java 对象。张量是库的主要输入,也可以作为输出返回。
-
-
嵌套类摘要
-
从接口 ai.onnxruntime.OnnxValue 继承的嵌套类/接口
OnnxValue.OnnxValueType
-
-
字段摘要
-
从类 ai.onnxruntime.OnnxTensorLike 继承的字段
allocatorHandle, closed, info, nativeHandle
-
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符及类型 方法 描述 void
close()
关闭张量,释放其底层内存(如果不是由 NIO 缓冲区支持)。static OnnxTensor
createTensor(OrtEnvironment env, java.lang.Object data)
从 Java 原语、原语多维数组或 String 多维数组创建张量。static OnnxTensor
createTensor(OrtEnvironment env, java.lang.String[] data, long[] shape)
从扁平化的字符串数组创建张量。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.ByteBuffer data, long[] shape)
创建由直接 ByteBuffer 支持的 OnnxTensor。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.ByteBuffer data, long[] shape, OnnxJavaType type)
创建由直接 ByteBuffer 支持的 OnnxTensor。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.DoubleBuffer data, long[] shape)
创建由直接 DoubleBuffer 支持的 OnnxTensor。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.FloatBuffer data, long[] shape)
创建由直接 FloatBuffer 支持的 OnnxTensor。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.IntBuffer data, long[] shape)
创建由直接 IntBuffer 支持的 OnnxTensor。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.LongBuffer data, long[] shape)
创建由直接 LongBuffer 支持的 OnnxTensor。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.ShortBuffer data, long[] shape)
创建由直接 ShortBuffer 支持的 OnnxTensor。static OnnxTensor
createTensor(OrtEnvironment env, java.nio.ShortBuffer data, long[] shape, OnnxJavaType type)
创建由直接 ShortBuffer 支持的 OnnxTensor。java.util.Optional<java.nio.Buffer>
getBufferRef()
返回支持此OnnxTensor
的缓冲区的引用。java.nio.ByteBuffer
getByteBuffer()
返回底层 OnnxTensor 作为 ByteBuffer 的副本。java.nio.DoubleBuffer
getDoubleBuffer()
如果底层类型是 double,则返回底层 OnnxTensor 作为 DoubleBuffer 的副本,否则返回 null。java.nio.FloatBuffer
getFloatBuffer()
如果底层 OnnxTensor 可以无损地转换为 float(即...java.nio.IntBuffer
getIntBuffer()
如果底层类型是 int32 或 uint32,则返回底层 OnnxTensor 作为 IntBuffer 的副本,否则返回 null。java.nio.LongBuffer
getLongBuffer()
如果底层类型是 int64 或 uint64,则返回底层 OnnxTensor 作为 LongBuffer 的副本,否则返回 null。java.nio.ShortBuffer
getShortBuffer()
如果底层类型是 int16, uint16, fp16 或 bf16,则返回底层 OnnxTensor 作为 ShortBuffer 的副本,否则返回 null。OnnxValue.OnnxValueType
getType()
获取此 OnnxValue 的类型。java.lang.Object
getValue()
如果张量是标量,则返回装箱的原语;如果张量是多维的,则返回原语的多维数组。boolean
ownsBuffer()
如果此 OnnxTensor 中的缓冲区是在构建此张量时创建的(即,它是用户提供的缓冲区或数组的副本,并且可能持有该缓冲区的唯一引用),则返回 true。java.lang.String
toString()
-
从类 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
中,这可用于重复更新单个张量以进行多次不同的推理,而无需分配新的张量,尽管输入 必须 保持相同的大小和形状。注意:张量可能引用此缓冲区中的一个连续元素范围,而不是整个缓冲区。用户有责任通过尊重位置和限制来管理此信息。因此,当多个线程持有缓冲区的引用时,访问此引用应被视为有问题。
- 返回
- 缓冲区的引用。
-
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()
- 覆盖
- 在类
java.lang.Object
中的toString
-
close
public void close()
关闭张量,释放其底层内存(如果不是由 NIO 缓冲区支持)。如果它是由缓冲区支持的,则在缓冲区被垃圾回收时释放内存。
-
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 原语、原语多维数组或 String 多维数组创建张量。形状使用反射从对象中推断。使用默认分配器。注意:Java 多维数组不是密集型的,此方法需要为高维数组遍历大量指针。对于非 String 类型,建议使用接受
Buffer
的createTensor
方法之一,例如createTensor(OrtEnvironment, FloatBuffer, long[])
,因为这些方法在使用直接缓冲区时可以将数据零拷贝传输到 ORT。- 参数
env
- 当前的 OrtEnvironment。data
- 要存储在张量中的数据。- 返回
- 存储数据的 OnnxTensor。
- 抛出
OrtException
- 如果 onnx runtime 抛出错误。
-
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 错误或数据和形状不匹配,则抛出。
-
-