類 OnnxTensor

  • 所有已實現的介面
    OnnxValue, java.lang.AutoCloseable

    public class OnnxTensor
    extends OnnxTensorLike
    一個包裝 OnnxTensor 的 Java 物件。張量是庫的主要輸入,也可以作為輸出返回。
    • 方法摘要

      所有方法 靜態方法 例項方法 具體方法 
      修飾符及型別 方法 描述
      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()  
      • 從類 java.lang.Object 繼承的方法

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 方法詳細資訊

      • ownsBuffer

        public boolean ownsBuffer()
        如果此 OnnxTensor 中的緩衝區是在構建此張量時建立的(即,它是使用者提供的緩衝區或陣列的副本,並且可能持有該緩衝區的唯一引用),則返回 true。

        當此值為 true 時,底層緩衝區是從使用者輸入複製的,因此使用者無法在首先透過 getBufferRef() 獲取引用之前修改此緩衝區的狀態。

        返回
        如果此 OnnxTensor 中的緩衝區是在構建時由它分配的(即,它是使用者緩衝區或陣列的副本),則返回 true。
      • getBufferRef

        public java.util.Optional<java.nio.Buffer> getBufferRef()
        返回支援此 OnnxTensor 的緩衝區的引用。如果張量不受緩衝區支援(即,它由 ORT 分配的記憶體支援),此方法返回一個空的 Optional

        對緩衝區元素的更改將反映在本地 OrtValue 中,這可用於重複更新單個張量以進行多次不同的推理,而無需分配新的張量,儘管輸入 必須 保持相同的大小和形狀。

        注意:張量可能引用此緩衝區中的一個連續元素範圍,而不是整個緩衝區。使用者有責任透過尊重位置和限制來管理此資訊。因此,當多個執行緒持有緩衝區的引用時,訪問此引用應被視為有問題。

        返回
        緩衝區的引用。
      • 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 型別,建議使用接受 BuffercreateTensor 方法之一,例如 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.FLOAT16OnnxJavaType.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 錯誤或資料和形狀不匹配,則丟擲。