Package org.pytorch

Class Tensor


  • public abstract class Tensor
    extends Object
    Representation of a Tensor. Behavior is similar to PyTorch's tensor objects.

    Most tensors will be constructed as Tensor.fromBlob(data, shape), where data can be an array or a direct Buffer (of the proper subclass). Helper methods are provided to allocate buffers properly.

    To access Tensor data, see dtype(), shape(), and various getDataAs* methods.

    When constructing Tensor objects with data as an array, it is not specified whether this data is copied or retained as a reference so it is recommended not to modify it after constructing. data passed as a Buffer is not copied, so it can be modified between Module calls to avoid reallocation. Data retrieved from Tensor objects may be copied or may be a reference to the Tensor's internal data buffer. shape is always copied.

    • Method Detail

      • allocateIntBuffer

        public static IntBuffer allocateIntBuffer​(int numElements)
        Allocates a new direct IntBuffer with native byte order with specified capacity that can be used in fromBlob(IntBuffer, long[]).
        Parameters:
        numElements - capacity (number of elements) of result buffer.
      • allocateFloatBuffer

        public static FloatBuffer allocateFloatBuffer​(int numElements)
        Allocates a new direct FloatBuffer with native byte order with specified capacity that can be used in fromBlob(FloatBuffer, long[]).
        Parameters:
        numElements - capacity (number of elements) of result buffer.
      • allocateLongBuffer

        public static LongBuffer allocateLongBuffer​(int numElements)
        Allocates a new direct LongBuffer with native byte order with specified capacity that can be used in fromBlob(LongBuffer, long[]).
        Parameters:
        numElements - capacity (number of elements) of result buffer.
      • allocateDoubleBuffer

        public static DoubleBuffer allocateDoubleBuffer​(int numElements)
        Allocates a new direct DoubleBuffer with native byte order with specified capacity that can be used in fromBlob(DoubleBuffer, long[]).
        Parameters:
        numElements - capacity (number of elements) of result buffer.
      • fromBlobUnsigned

        public static Tensor fromBlobUnsigned​(byte[] data,
                                              long[] shape,
                                              MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.uint8 with specified shape and data as array of bytes.
        Parameters:
        data - Tensor elements
        shape - Tensor shape
      • fromBlobUnsigned

        public static Tensor fromBlobUnsigned​(byte[] data,
                                              long[] shape)
      • fromBlob

        public static Tensor fromBlob​(byte[] data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.int8 with specified shape and data as array of bytes.
        Parameters:
        data - Tensor elements
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(byte[] data,
                                      long[] shape)
      • fromBlob

        public static Tensor fromBlob​(int[] data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.int32 with specified shape and data as array of ints.
        Parameters:
        data - Tensor elements
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(int[] data,
                                      long[] shape)
      • fromBlob

        public static Tensor fromBlob​(float[] data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.float32 with specified shape and data as array of floats.
        Parameters:
        data - Tensor elements
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(float[] data,
                                      long[] shape)
      • fromBlob

        public static Tensor fromBlob​(long[] data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.int64 with specified shape and data as array of longs.
        Parameters:
        data - Tensor elements
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(long[] data,
                                      long[] shape)
      • fromBlob

        public static Tensor fromBlob​(double[] data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.float64 with specified shape and data as array of doubles.
        Parameters:
        shape - Tensor shape
        data - Tensor elements
      • fromBlob

        public static Tensor fromBlob​(double[] data,
                                      long[] shape)
      • fromBlobUnsigned

        public static Tensor fromBlobUnsigned​(ByteBuffer data,
                                              long[] shape,
                                              MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.uint8 with specified shape and data.
        Parameters:
        data - Direct buffer with native byte order that contains Tensor.numel(shape) elements. The buffer is used directly without copying, and changes to its content will change the tensor.
        shape - Tensor shape
      • fromBlobUnsigned

        public static Tensor fromBlobUnsigned​(ByteBuffer data,
                                              long[] shape)
      • fromBlob

        public static Tensor fromBlob​(ByteBuffer data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.int8 with specified shape and data.
        Parameters:
        data - Direct buffer with native byte order that contains Tensor.numel(shape) elements. The buffer is used directly without copying, and changes to its content will change the tensor.
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(IntBuffer data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.int32 with specified shape and data.
        Parameters:
        data - Direct buffer with native byte order that contains Tensor.numel(shape) elements. The buffer is used directly without copying, and changes to its content will change the tensor.
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(IntBuffer data,
                                      long[] shape)
      • fromBlob

        public static Tensor fromBlob​(FloatBuffer data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.float32 with specified shape and data.
        Parameters:
        data - Direct buffer with native byte order that contains Tensor.numel(shape) elements. The buffer is used directly without copying, and changes to its content will change the tensor.
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(LongBuffer data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.int64 with specified shape and data.
        Parameters:
        data - Direct buffer with native byte order that contains Tensor.numel(shape) elements. The buffer is used directly without copying, and changes to its content will change the tensor.
        shape - Tensor shape
      • fromBlob

        public static Tensor fromBlob​(DoubleBuffer data,
                                      long[] shape,
                                      MemoryFormat memoryFormat)
        Creates a new Tensor instance with dtype torch.float64 with specified shape and data.
        Parameters:
        data - Direct buffer with native byte order that contains Tensor.numel(shape) elements. The buffer is used directly without copying, and changes to its content will change the tensor.
        shape - Tensor shape
      • numel

        public long numel()
        Returns the number of elements in this tensor.
      • numel

        public static long numel​(long[] shape)
        Calculates the number of elements in a tensor with the specified shape.
      • shape

        public long[] shape()
        Returns the shape of this tensor. (The array is a fresh copy.)
      • memoryFormat

        public MemoryFormat memoryFormat()
        Returns the memory format of this tensor.
      • dtype

        public abstract DType dtype()
        Returns:
        data type of this tensor.
      • getDataAsByteArray

        public byte[] getDataAsByteArray()
        Returns:
        a Java byte array that contains the tensor data. This may be a copy or reference.
        Throws:
        IllegalStateException - if it is called for a non-int8 tensor.
      • getDataAsUnsignedByteArray

        public byte[] getDataAsUnsignedByteArray()
        Returns:
        a Java byte array that contains the tensor data. This may be a copy or reference.
        Throws:
        IllegalStateException - if it is called for a non-uint8 tensor.
      • getDataAsIntArray

        public int[] getDataAsIntArray()
        Returns:
        a Java int array that contains the tensor data. This may be a copy or reference.
        Throws:
        IllegalStateException - if it is called for a non-int32 tensor.
      • getDataAsFloatArray

        public float[] getDataAsFloatArray()
        Returns:
        a Java float array that contains the tensor data. This may be a copy or reference.
        Throws:
        IllegalStateException - if it is called for a non-float32 tensor.
      • getDataAsLongArray

        public long[] getDataAsLongArray()
        Returns:
        a Java long array that contains the tensor data. This may be a copy or reference.
        Throws:
        IllegalStateException - if it is called for a non-int64 tensor.
      • getDataAsDoubleArray

        public double[] getDataAsDoubleArray()
        Returns:
        a Java double array that contains the tensor data. This may be a copy or reference.
        Throws:
        IllegalStateException - if it is called for a non-float64 tensor.