public abstract class Tensor
extends java.lang.Object
大多数张量将被构造为 Tensor.fromBlob(data, shape)
,其中 data
可以是数组或直接 Buffer
(适当的子类)。提供了辅助方法来适当地分配缓冲区。
要访问 Tensor 数据,请参阅 dtype()
、shape()
和各种 getDataAs*
方法。
使用 data
作为数组构造 Tensor
对象时,未指定此数据是复制还是作为引用保留,因此建议在构造后不要修改它。作为 Buffer
传递的 data
不会被复制,因此可以在 Module
调用之间修改它以避免重新分配。从 Tensor
对象检索的数据可能被复制,也可能是对 Tensor
的内部数据缓冲区的引用。shape
始终被复制。
修饰符和类型 | 方法和描述 |
---|---|
static java.nio.ByteBuffer |
allocateByteBuffer(int numElements)
分配一个新的直接
ByteBuffer ,具有本机字节序和指定的容量,可用于 fromBlob(ByteBuffer, long[]) 、fromBlobUnsigned(ByteBuffer, long[]) 。 |
static java.nio.DoubleBuffer |
allocateDoubleBuffer(int numElements)
分配一个新的直接
DoubleBuffer ,具有本机字节序和指定的容量,可用于 fromBlob(DoubleBuffer, long[]) 。 |
static java.nio.FloatBuffer |
allocateFloatBuffer(int numElements)
分配一个新的直接
FloatBuffer ,具有本机字节序和指定的容量,可用于 fromBlob(FloatBuffer, long[]) 。 |
static java.nio.IntBuffer |
allocateIntBuffer(int numElements)
分配一个新的直接
IntBuffer ,具有本机字节序和指定的容量,可用于 fromBlob(IntBuffer, long[]) 。 |
static java.nio.LongBuffer |
allocateLongBuffer(int numElements)
分配一个新的直接
LongBuffer ,具有本机字节序和指定的容量,可用于 fromBlob(LongBuffer, long[]) 。 |
abstract DType |
dtype() |
static Tensor |
fromBlob(byte[] data, long[] shape) |
static Tensor |
fromBlob(byte[] data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.int8,具有指定的形状和数据作为字节数组。
|
static Tensor |
fromBlob(java.nio.ByteBuffer data, long[] shape) |
static Tensor |
fromBlob(java.nio.ByteBuffer data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.int8,具有指定的形状和数据。
|
static Tensor |
fromBlob(double[] data, long[] shape) |
static Tensor |
fromBlob(double[] data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.float64,具有指定的形状和数据作为双精度数组。
|
static Tensor |
fromBlob(java.nio.DoubleBuffer data, long[] shape) |
static Tensor |
fromBlob(java.nio.DoubleBuffer data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.float64,具有指定的形状和数据。
|
static Tensor |
fromBlob(float[] data, long[] shape) |
static Tensor |
fromBlob(float[] data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.float32,具有指定的形状和数据作为浮点数数组。
|
static Tensor |
fromBlob(java.nio.FloatBuffer data, long[] shape) |
static Tensor |
fromBlob(java.nio.FloatBuffer data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.float32,具有指定的形状和数据。
|
static Tensor |
fromBlob(int[] data, long[] shape) |
static Tensor |
fromBlob(int[] data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.int32,具有指定的形状和数据作为整数数组。
|
static Tensor |
fromBlob(java.nio.IntBuffer data, long[] shape) |
static Tensor |
fromBlob(java.nio.IntBuffer data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.int32,具有指定的形状和数据。
|
static Tensor |
fromBlob(long[] data, long[] shape) |
static Tensor |
fromBlob(long[] data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.int64,具有指定的形状和数据作为长整数数组。
|
static Tensor |
fromBlob(java.nio.LongBuffer data, long[] shape) |
static Tensor |
fromBlob(java.nio.LongBuffer data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.int64,具有指定的形状和数据。
|
static Tensor |
fromBlobUnsigned(byte[] data, long[] shape) |
static Tensor |
fromBlobUnsigned(byte[] data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.uint8,具有指定的形状和数据作为字节数组。
|
static Tensor |
fromBlobUnsigned(java.nio.ByteBuffer data, long[] shape) |
static Tensor |
fromBlobUnsigned(java.nio.ByteBuffer data, long[] shape, MemoryFormat memoryFormat)
创建一个新的 Tensor 实例,其 dtype 为 torch.uint8,具有指定的形状和数据。
|
byte[] |
getDataAsByteArray() |
double[] |
getDataAsDoubleArray() |
float[] |
getDataAsFloatArray() |
int[] |
getDataAsIntArray() |
long[] |
getDataAsLongArray() |
byte[] |
getDataAsUnsignedByteArray() |
MemoryFormat |
memoryFormat()
返回此张量的内存格式。
|
long |
numel()
返回此张量中的元素数量。
|
static long |
numel(long[] shape)
计算具有指定形状的张量中的元素数量。
|
long[] |
shape()
返回此张量的形状。
|
public static java.nio.ByteBuffer allocateByteBuffer(int numElements)
ByteBuffer
,具有本机字节序和指定的容量,可用于 fromBlob(ByteBuffer, long[])
、fromBlobUnsigned(ByteBuffer, long[])
。numElements
- 结果缓冲区的容量(元素数量)。public static java.nio.IntBuffer allocateIntBuffer(int numElements)
IntBuffer
,具有本机字节序和指定的容量,可用于 fromBlob(IntBuffer, long[])
。numElements
- 结果缓冲区的容量(元素数量)。public static java.nio.FloatBuffer allocateFloatBuffer(int numElements)
FloatBuffer
,具有本机字节序和指定的容量,可用于 fromBlob(FloatBuffer, long[])
。numElements
- 结果缓冲区的容量(元素数量)。public static java.nio.LongBuffer allocateLongBuffer(int numElements)
LongBuffer
,具有本机字节序和指定的容量,可用于 fromBlob(LongBuffer, long[])
。numElements
- 结果缓冲区的容量(元素数量)。public static java.nio.DoubleBuffer allocateDoubleBuffer(int numElements)
DoubleBuffer
,具有本机字节序和指定的容量,可用于 fromBlob(DoubleBuffer, long[])
。numElements
- 结果缓冲区的容量(元素数量)。public static Tensor fromBlobUnsigned(byte[] data, long[] shape, MemoryFormat memoryFormat)
data
- 张量元素shape
- 张量形状public static Tensor fromBlobUnsigned(byte[] data, long[] shape)
public static Tensor fromBlob(byte[] data, long[] shape, MemoryFormat memoryFormat)
data
- 张量元素shape
- 张量形状public static Tensor fromBlob(byte[] data, long[] shape)
public static Tensor fromBlob(int[] data, long[] shape, MemoryFormat memoryFormat)
data
- 张量元素shape
- 张量形状public static Tensor fromBlob(int[] data, long[] shape)
public static Tensor fromBlob(float[] data, long[] shape, MemoryFormat memoryFormat)
data
- 张量元素shape
- 张量形状public static Tensor fromBlob(float[] data, long[] shape)
public static Tensor fromBlob(long[] data, long[] shape, MemoryFormat memoryFormat)
data
- 张量元素shape
- 张量形状public static Tensor fromBlob(long[] data, long[] shape)
public static Tensor fromBlob(double[] data, long[] shape, MemoryFormat memoryFormat)
shape
- 张量形状data
- 张量元素public static Tensor fromBlob(double[] data, long[] shape)
public static Tensor fromBlobUnsigned(java.nio.ByteBuffer data, long[] shape, MemoryFormat memoryFormat)
data
- 具有本机字节序的直接缓冲区,包含 Tensor.numel(shape)
个元素。缓冲区将直接使用,不会复制,对其内容的更改将更改张量。shape
- 张量形状public static Tensor fromBlobUnsigned(java.nio.ByteBuffer data, long[] shape)
public static Tensor fromBlob(java.nio.ByteBuffer data, long[] shape, MemoryFormat memoryFormat)
data
- 具有本机字节序的直接缓冲区,包含 Tensor.numel(shape)
个元素。缓冲区将直接使用,不会复制,对其内容的更改将更改张量。shape
- 张量形状public static Tensor fromBlob(java.nio.ByteBuffer data, long[] shape)
public static Tensor fromBlob(java.nio.IntBuffer data, long[] shape, MemoryFormat memoryFormat)
data
- 具有本机字节序的直接缓冲区,包含 Tensor.numel(shape)
个元素。缓冲区将直接使用,不会复制,对其内容的更改将更改张量。shape
- 张量形状public static Tensor fromBlob(java.nio.IntBuffer data, long[] shape)
public static Tensor fromBlob(java.nio.FloatBuffer data, long[] shape, MemoryFormat memoryFormat)
data
- 具有本机字节序的直接缓冲区,包含 Tensor.numel(shape)
个元素。缓冲区将直接使用,不会复制,对其内容的更改将更改张量。shape
- 张量形状public static Tensor fromBlob(java.nio.FloatBuffer data, long[] shape)
public static Tensor fromBlob(java.nio.LongBuffer data, long[] shape, MemoryFormat memoryFormat)
data
- 具有本机字节序的直接缓冲区,包含 Tensor.numel(shape)
个元素。缓冲区将直接使用,不会复制,对其内容的更改将更改张量。shape
- 张量形状public static Tensor fromBlob(java.nio.LongBuffer data, long[] shape)
public static Tensor fromBlob(java.nio.DoubleBuffer data, long[] shape, MemoryFormat memoryFormat)
data
- 具有本机字节序的直接缓冲区,包含 Tensor.numel(shape)
个元素。缓冲区将直接使用,不会复制,对其内容的更改将更改张量。shape
- 张量形状public static Tensor fromBlob(java.nio.DoubleBuffer data, long[] shape)
public long numel()
public static long numel(long[] shape)
public long[] shape()
public MemoryFormat memoryFormat()
public abstract DType dtype()
public byte[] getDataAsByteArray()
java.lang.IllegalStateException
- 如果它被用于非 int8 张量调用。public byte[] getDataAsUnsignedByteArray()
java.lang.IllegalStateException
- 如果它被用于非 uint8 张量调用。public int[] getDataAsIntArray()
java.lang.IllegalStateException
- 如果它被用于非 int32 张量调用。public float[] getDataAsFloatArray()
java.lang.IllegalStateException
- 如果它被用于非 float32 张量调用。public long[] getDataAsLongArray()
java.lang.IllegalStateException
- 如果它被用于非 int64 张量调用。public double[] getDataAsDoubleArray()
java.lang.IllegalStateException
- 如果它被用于非 float64 张量调用。