Package org.pytorch
Class Tensor
- java.lang.Object
-
- org.pytorch.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)
, wheredata
can be an array or a directBuffer
(of the proper subclass). Helper methods are provided to allocate buffers properly.To access Tensor data, see
dtype()
,shape()
, and variousgetDataAs*
methods.When constructing
Tensor
objects withdata
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 aBuffer
is not copied, so it can be modified betweenModule
calls to avoid reallocation. Data retrieved fromTensor
objects may be copied or may be a reference to theTensor
's internal data buffer.shape
is always copied.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static ByteBuffer
allocateByteBuffer(int numElements)
Allocates a new directByteBuffer
with native byte order with specified capacity that can be used infromBlob(ByteBuffer, long[])
,fromBlobUnsigned(ByteBuffer, long[])
.static DoubleBuffer
allocateDoubleBuffer(int numElements)
Allocates a new directDoubleBuffer
with native byte order with specified capacity that can be used infromBlob(DoubleBuffer, long[])
.static FloatBuffer
allocateFloatBuffer(int numElements)
Allocates a new directFloatBuffer
with native byte order with specified capacity that can be used infromBlob(FloatBuffer, long[])
.static IntBuffer
allocateIntBuffer(int numElements)
Allocates a new directIntBuffer
with native byte order with specified capacity that can be used infromBlob(IntBuffer, long[])
.static LongBuffer
allocateLongBuffer(int numElements)
Allocates a new directLongBuffer
with native byte order with specified capacity that can be used infromBlob(LongBuffer, long[])
.abstract DType
dtype()
static Tensor
fromBlob(byte[] data, long[] shape)
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.static Tensor
fromBlob(double[] data, long[] shape)
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.static Tensor
fromBlob(float[] data, long[] shape)
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.static Tensor
fromBlob(int[] data, long[] shape)
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.static Tensor
fromBlob(long[] data, long[] shape)
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.static Tensor
fromBlob(ByteBuffer data, long[] shape)
static Tensor
fromBlob(ByteBuffer data, long[] shape, MemoryFormat memoryFormat)
Creates a new Tensor instance with dtype torch.int8 with specified shape and data.static Tensor
fromBlob(DoubleBuffer data, long[] shape)
static Tensor
fromBlob(DoubleBuffer data, long[] shape, MemoryFormat memoryFormat)
Creates a new Tensor instance with dtype torch.float64 with specified shape and data.static Tensor
fromBlob(FloatBuffer data, long[] shape)
static Tensor
fromBlob(FloatBuffer data, long[] shape, MemoryFormat memoryFormat)
Creates a new Tensor instance with dtype torch.float32 with specified shape and data.static Tensor
fromBlob(IntBuffer data, long[] shape)
static Tensor
fromBlob(IntBuffer data, long[] shape, MemoryFormat memoryFormat)
Creates a new Tensor instance with dtype torch.int32 with specified shape and data.static Tensor
fromBlob(LongBuffer data, long[] shape)
static Tensor
fromBlob(LongBuffer data, long[] shape, MemoryFormat memoryFormat)
Creates a new Tensor instance with dtype torch.int64 with specified shape and data.static Tensor
fromBlobUnsigned(byte[] data, long[] shape)
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.static Tensor
fromBlobUnsigned(ByteBuffer data, long[] shape)
static Tensor
fromBlobUnsigned(ByteBuffer data, long[] shape, MemoryFormat memoryFormat)
Creates a new Tensor instance with dtype torch.uint8 with specified shape and data.byte[]
getDataAsByteArray()
double[]
getDataAsDoubleArray()
float[]
getDataAsFloatArray()
int[]
getDataAsIntArray()
long[]
getDataAsLongArray()
byte[]
getDataAsUnsignedByteArray()
MemoryFormat
memoryFormat()
Returns the memory format of this tensor.long
numel()
Returns the number of elements in this tensor.static long
numel(long[] shape)
Calculates the number of elements in a tensor with the specified shape.long[]
shape()
Returns the shape of this tensor.
-
-
-
Method Detail
-
allocateByteBuffer
public static ByteBuffer allocateByteBuffer(int numElements)
Allocates a new directByteBuffer
with native byte order with specified capacity that can be used infromBlob(ByteBuffer, long[])
,fromBlobUnsigned(ByteBuffer, long[])
.- Parameters:
numElements
- capacity (number of elements) of result buffer.
-
allocateIntBuffer
public static IntBuffer allocateIntBuffer(int numElements)
Allocates a new directIntBuffer
with native byte order with specified capacity that can be used infromBlob(IntBuffer, long[])
.- Parameters:
numElements
- capacity (number of elements) of result buffer.
-
allocateFloatBuffer
public static FloatBuffer allocateFloatBuffer(int numElements)
Allocates a new directFloatBuffer
with native byte order with specified capacity that can be used infromBlob(FloatBuffer, long[])
.- Parameters:
numElements
- capacity (number of elements) of result buffer.
-
allocateLongBuffer
public static LongBuffer allocateLongBuffer(int numElements)
Allocates a new directLongBuffer
with native byte order with specified capacity that can be used infromBlob(LongBuffer, long[])
.- Parameters:
numElements
- capacity (number of elements) of result buffer.
-
allocateDoubleBuffer
public static DoubleBuffer allocateDoubleBuffer(int numElements)
Allocates a new directDoubleBuffer
with native byte order with specified capacity that can be used infromBlob(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 elementsshape
- 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 elementsshape
- 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 elementsshape
- 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 elementsshape
- 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 elementsshape
- 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 shapedata
- 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 containsTensor.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 containsTensor.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(ByteBuffer data, long[] 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 containsTensor.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, 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 containsTensor.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)
-
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 containsTensor.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)
-
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 containsTensor.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)
-
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.
-
-