Shortcuts

Tensor

public abstract class Tensor

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 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.

Methods

allocateByteBuffer

public static ByteBuffer allocateByteBuffer(int numElements)

Allocates a new direct java.nio.ByteBuffer with native byte order with specified capacity that can be used in Tensor.fromBlob(ByteBuffer,long[]), Tensor.fromBlobUnsigned(ByteBuffer,long[]).

Parameters
  • numElements – capacity (number of elements) of result buffer.

allocateDoubleBuffer

public static DoubleBuffer allocateDoubleBuffer(int numElements)

Allocates a new direct java.nio.DoubleBuffer with native byte order with specified capacity that can be used in Tensor.fromBlob(DoubleBuffer,long[]).

Parameters
  • numElements – capacity (number of elements) of result buffer.

allocateFloatBuffer

public static FloatBuffer allocateFloatBuffer(int numElements)

Allocates a new direct java.nio.FloatBuffer with native byte order with specified capacity that can be used in Tensor.fromBlob(FloatBuffer,long[]).

Parameters
  • numElements – capacity (number of elements) of result buffer.

allocateIntBuffer

public static IntBuffer allocateIntBuffer(int numElements)

Allocates a new direct java.nio.IntBuffer with native byte order with specified capacity that can be used in Tensor.fromBlob(IntBuffer,long[]).

Parameters
  • numElements – capacity (number of elements) of result buffer.

allocateLongBuffer

public static LongBuffer allocateLongBuffer(int numElements)

Allocates a new direct java.nio.LongBuffer with native byte order with specified capacity that can be used in Tensor.fromBlob(LongBuffer,long[]).

Parameters
  • numElements – capacity (number of elements) of result buffer.

dtype

public abstract DType dtype()
Returns

data type of this tensor.

dtypeJniCode

int dtypeJniCode()

fromBlob

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

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(int[] data, long[] shape)

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(float[] data, long[] shape)

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(long[] data, long[] shape)

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[] shape, double[] data)

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(ByteBuffer data, long[] shape)

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)

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(FloatBuffer data, long[] shape)

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)

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)

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

fromBlobUnsigned

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

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(ByteBuffer data, long[] shape)

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

getDataAsByteArray

public byte[] getDataAsByteArray()
Throws
Returns

a Java byte array that contains the tensor data. This may be a copy or reference.

getDataAsDoubleArray

public double[] getDataAsDoubleArray()
Throws
Returns

a Java double array that contains the tensor data. This may be a copy or reference.

getDataAsFloatArray

public float[] getDataAsFloatArray()
Throws
Returns

a Java float array that contains the tensor data. This may be a copy or reference.

getDataAsIntArray

public int[] getDataAsIntArray()
Throws
Returns

a Java int array that contains the tensor data. This may be a copy or reference.

getDataAsLongArray

public long[] getDataAsLongArray()
Throws
Returns

a Java long array that contains the tensor data. This may be a copy or reference.

getDataAsUnsignedByteArray

public byte[] getDataAsUnsignedByteArray()
Throws
Returns

a Java byte array that contains the tensor data. This may be a copy or reference.

getRawDataBuffer

Buffer getRawDataBuffer()

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.)

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources