A statically typed multi-dimensional array whose elements are of a type described by T.
Instances of a Tensor are not thread-safe.
WARNING:
Resources consumed by the Tensor object
must
be explicitly freed by
invoking the
close()
method when the object is no longer needed. For example, using a
try-with-resources block:
try (Tensor t = Tensor.create(...)) {
doSomethingWith(t);
}
Public Methods
boolean |
booleanValue
()
Returns the value in a scalar
Boolean
tensor.
|
byte[] |
bytesValue
()
Returns the value in a scalar
String
tensor.
|
void |
close
()
Release resources associated with the Tensor.
|
<U> U |
copyTo
(U dst)
Copies the contents of the tensor to
dst
and returns
dst
.
|
static Tensor <?> |
create
(Object obj)
Creates a tensor from an object whose class is inspected to figure out what the underlying data
type should be.
|
static <T> Tensor <T> |
create
(Class<T> type, long[] shape, ByteBuffer data)
Create a Tensor of any type with data from the given buffer.
|
static Tensor <Double> | |
static Tensor <Long> | |
static Tensor <Integer> | |
static Tensor <Float> | |
static <T> Tensor <T> |
create
(Object obj, Class<T> type)
Creates a Tensor from a Java object.
|
DataType | |
double |
doubleValue
()
Returns the value in a scalar
Double
tensor.
|
<U> Tensor <U> |
expect
(Class<U> type)
Returns this Tensor object with the type
Tensor<U>
.
|
float |
floatValue
()
Returns the value in a scalar
Float
tensor.
|
int | |
long | |
int |
numBytes
()
Returns the size, in bytes, of the tensor data.
|
int |
numDimensions
()
Returns the number of dimensions (sometimes referred to as
rank
) of the Tensor.
|
int |
numElements
()
Returns the number of elements in a flattened (1-D) view of the tensor.
|
long[] | |
String |
toString
()
Returns a string describing the type and shape of the Tensor.
|
void | |
void | |
void | |
void |
writeTo
(ByteBuffer dst)
Write the tensor data into the given buffer.
|
void |
Inherited Methods
Public Methods
public boolean booleanValue ()
Returns the value in a scalar
Boolean
tensor.
Throws
IllegalArgumentException | if the Tensor does not represent a boolean scalar. |
---|
public byte[] bytesValue ()
Returns the value in a scalar
String
tensor.
Throws
IllegalArgumentException | if the Tensor does not represent a boolean scalar. |
---|
public void close ()
Release resources associated with the Tensor.
WARNING: This must be invoked for all tensors that were not been produced by an eager operation or memory will be leaked.
The Tensor object is no longer usable after
close
returns.
public U copyTo (U dst)
Copies the contents of the tensor to
dst
and returns
dst
.
For non-scalar tensors, this method copies the contents of the underlying tensor to a Java
array. For scalar tensors, use one of
bytesValue()
,
floatValue()
,
doubleValue()
,
intValue()
,
longValue()
or
booleanValue()
instead.
The type and shape of
dst
must be compatible with the tensor. For example:
int matrix[2][2] = { {1,2
,{3,4} };
try(Tensor t = Tensor.create(matrix)) {
// Succeeds and prints "3"
int[][] copy = new int[2][2];
System.out.println(t.copyTo(copy)[1][0]);
// Throws IllegalArgumentException since the shape of dst does not match the shape of t.
int[][] dst = new int[4][1];
t.copyTo(dst);
}
}
Throws
IllegalArgumentException |
if the tensor is a scalar or if
dst
is not compatible
with the tensor (for example, mismatched data types or shapes).
|
---|
public static Tensor <?> create (Object obj)
Creates a tensor from an object whose class is inspected to figure out what the underlying data type should be.
Throws
IllegalArgumentException |
if
obj
is not compatible with the TensorFlow type
system.
|
---|
public static Tensor <T> create (Class<T> type, long[] shape, ByteBuffer data)
Create a Tensor of any type with data from the given buffer.
Creates a Tensor with the provided shape of any type where the tensor's data has been
encoded into
data
as per the specification of the TensorFlow
C
API
.
Parameters
type | the tensor element type, represented as a class object. |
---|---|
shape | the tensor shape. |
data | a buffer containing the tensor data. |
Throws
IllegalArgumentException | If the tensor datatype or shape is not compatible with the buffer |
---|
public static Tensor <Double> create (long[] shape, DoubleBuffer data)
Create a
Double
Tensor with data from the given buffer.
Creates a Tensor with the given shape by copying elements from the buffer (starting from its
current position) into the tensor. For example, if
shape = {2,3
} (which represents a
2x3 matrix) then the buffer must have 6 elements remaining, which will be consumed by this
method.
Parameters
shape | the tensor shape. |
---|---|
data | a buffer containing the tensor data. |
Throws
IllegalArgumentException | If the tensor shape is not compatible with the buffer |
---|
public static Tensor <Long> create (long[] shape, LongBuffer data)
Create an
Long
Tensor with data from the given buffer.
Creates a Tensor with the given shape by copying elements from the buffer (starting from its
current position) into the tensor. For example, if
shape = {2,3
} (which represents a
2x3 matrix) then the buffer must have 6 elements remaining, which will be consumed by this
method.
Parameters
shape | the tensor shape. |
---|---|
data | a buffer containing the tensor data. |
Throws
IllegalArgumentException | If the tensor shape is not compatible with the buffer |
---|
public static Tensor <Integer> create (long[] shape, IntBuffer data)
Create a
Integer
Tensor with data from the given buffer.
Creates a Tensor with the given shape by copying elements from the buffer (starting from its
current position) into the tensor. For example, if
shape = {2,3
} (which represents a
2x3 matrix) then the buffer must have 6 elements remaining, which will be consumed by this
method.
Parameters
shape | the tensor shape. |
---|---|
data | a buffer containing the tensor data. |
Throws
IllegalArgumentException | If the tensor shape is not compatible with the buffer |
---|
public static Tensor <Float> create (long[] shape, FloatBuffer data)
Create a
Float
Tensor with data from the given buffer.
Creates a Tensor with the given shape by copying elements from the buffer (starting from its
current position) into the tensor. For example, if
shape = {2,3
} (which represents a
2x3 matrix) then the buffer must have 6 elements remaining, which will be consumed by this
method.
Parameters
shape | the tensor shape. |
---|---|
data | a buffer containing the tensor data. |
Throws
IllegalArgumentException | If the tensor shape is not compatible with the buffer |
---|
public static Tensor <T> create (Object obj, Class<T> type)
Creates a Tensor from a Java object.
A
Tensor
is a multi-dimensional array of elements of a limited set of types. Not all
Java objects can be converted to a
Tensor
. In particular, the argument
obj
must
be either a primitive (float, double, int, long, boolean, byte) or a multi-dimensional array of
one of those primitives. The argument
type
specifies how to interpret the first
argument as a TensorFlow type. For example:
// Valid: A 64-bit integer scalar.
Tensor<Long> s = Tensor.create(42L, Long.class);
// Valid: A 3x2 matrix of floats.
float[][] matrix = new float[3][2];
Tensor<Float> m = Tensor.create(matrix, Float.class);
// Invalid: Will throw an IllegalArgumentException as an arbitrary Object
// does not fit into the TensorFlow type system.
Tensor<?> o = Tensor.create(new Object())
// Invalid: Will throw an IllegalArgumentException since there are
// a differing number of elements in each row of this 2-D array.
int[][] twoD = new int[2][];
twoD[0] = new int[1];
twoD[1] = new int[2];
Tensor<Integer> x = Tensor.create(twoD, Integer.class);
String
-typed Tensors are multi-dimensional arrays of arbitrary byte sequences, so can
be initialized from arrays of
byte[]
elements. For example:
// Valid: A String tensor. Tensor<String> s = Tensor.create(new byte[]{1, 2, 3
, String.class); // Java Strings will need to be encoded into a byte-sequence. String mystring = "foo"; Tensors = Tensor.create(mystring.getBytes("UTF-8"), String.class); // Valid: Matrix of String tensors. // Each element might have a different length. byte[][][] matrix = new byte[2][2][]; matrix[0][0] = "this".getBytes("UTF-8"); matrix[0][1] = "is".getBytes("UTF-8"); matrix[1][0] = "a".getBytes("UTF-8"); matrix[1][1] = "matrix".getBytes("UTF-8"); Tensor m = Tensor.create(matrix, String.class); }
Parameters
obj |
The object to convert to a
Tensor<T>
. Note that whether it is compatible
with the type T is not checked by the type system. For type-safe creation of tensors, use
Tensors
.
|
---|---|
type | The class object representing the type T. |
Throws
IllegalArgumentException |
if
obj
is not compatible with the TensorFlow type
system.
|
---|
public double doubleValue ()
Returns the value in a scalar
Double
tensor.
Throws
IllegalArgumentException | if the Tensor does not represent a double scalar. |
---|
public Tensor <U> expect (Class<U> type)
Returns this Tensor object with the type
Tensor<U>
. This method is useful when given a
value of type
Tensor<?>
.
Parameters
type | any (non-null) array of the correct type. |
---|
Throws
IllegalArgumentException |
if the actual data type of this object does not match the type
U
.
|
---|
public float floatValue ()
Returns the value in a scalar
Float
tensor.
Throws
IllegalArgumentException | if the Tensor does not represent a float scalar. |
---|
public int intValue ()
Returns the value in a scalar
Integer
tensor.
Throws
IllegalArgumentException | if the Tensor does not represent a int scalar. |
---|
public long longValue ()
Returns the value in a scalar
Long
tensor.
Throws
IllegalArgumentException | if the Tensor does not represent a long scalar. |
---|
public int numBytes ()
Returns the size, in bytes, of the tensor data.
public int numDimensions ()
Returns the number of dimensions (sometimes referred to as rank ) of the Tensor.
Will be 0 for a scalar, 1 for a vector, 2 for a matrix, 3 for a 3-dimensional tensor etc.
public int numElements ()
Returns the number of elements in a flattened (1-D) view of the tensor.
public long[] shape ()
Returns the shape of the Tensor, i.e., the sizes of each dimension.
Returns
- an array where the i-th element is the size of the i-th dimension of the tensor.
public String toString ()
Returns a string describing the type and shape of the Tensor.
public void writeTo (LongBuffer dst)
Write the data of a
Long
tensor into the given buffer.
Copies
numElements()
elements to the buffer.
Parameters
dst | the destination buffer |
---|
Throws
BufferOverflowException | If there is insufficient space in the given buffer for the data in this tensor |
---|---|
IllegalArgumentException |
If the tensor datatype is not
Long
|
public void writeTo (DoubleBuffer dst)
Write the data of a
Double
tensor into the given buffer.
Copies
numElements()
elements to the buffer.
Parameters
dst | the destination buffer |
---|
Throws
BufferOverflowException | If there is insufficient space in the given buffer for the data in this tensor |
---|---|
IllegalArgumentException |
If the tensor datatype is not
Double
|
public void writeTo (IntBuffer dst)
Write the data of a
Integer
tensor into the given buffer.
Copies
numElements()
elements to the buffer.
Parameters
dst | the destination buffer |
---|
Throws
BufferOverflowException | If there is insufficient space in the given buffer for the data in this tensor |
---|---|
IllegalArgumentException |
If the tensor data type is not
Integer
|
public void writeTo (ByteBuffer dst)
Write the tensor data into the given buffer.
Copies
numBytes()
bytes to the buffer in native byte order for primitive types.
Parameters
dst | the destination buffer |
---|
Throws
BufferOverflowException | If there is insufficient space in the given buffer for the data in this tensor |
---|
public void writeTo (FloatBuffer dst)
Write the data of a
Float
tensor into the given buffer.
Copies
numElements()
elements to the buffer.
Parameters
dst | the destination buffer |
---|
Throws
BufferOverflowException | If there is insufficient space in the given buffer for the data in this tensor |
---|---|
IllegalArgumentException |
If the tensor datatype is not
Float
|