Class Tensor
Represents data in a multidimensional array-like structure.
Ownership and lifetime:
- Disposed needs to be called on the main thread.
- Ownership is always to the owner of the object.
Data Representation:
- TensorShape represents the data layout of the tensor
- Data is held by a tensorData (ITensorData) which can be on a given backend
- Data is stored in a flattened row major format
- Data can be pending (ie computation is being done in parallel)
- call CompleteAllPendingOperations for a blocking call to finish computing the tensor's data
- call CompleteOperationsAndDownloadAsync/ReadbackRequest for a non blocking call to finish computing the tensor's data Data can be in a non readable type (GPU/NPU)
- Call CompleteOperationsAndDownload to make the tensor readable (this will fetch the data on the backend and convert it to a readable format)
- CompleteOperationsAndDownload is a blocking call if called on its own. for a non blocking call, make sure that CompleteOperationsAndDownloadAsync/ReadbackRequest have been called previously you can check that with IsReadbackRequestDone
Data manipulation
- ToReadOnlyArray returns a copy of the tensor's data
- dataOnBackend can be manipulated directly to avoid a unnecessary copy see ComputeTensorData/BurstTensorData for info
Implements
Inherited Members
Namespace: Unity.Sentis
Assembly: Unity.Sentis.dll
Syntax
public abstract class Tensor : IDisposable
Properties
backendType
The backend type where the tensor data is currently stored.
Declaration
public BackendType backendType { get; }
Property Value
Type | Description |
---|---|
BackendType |
count
The length of the tensor.
Declaration
public abstract int count { get; }
Property Value
Type | Description |
---|---|
int |
dataOnBackend
The device-specific internal representation of the tensor data.
Declaration
public ITensorData dataOnBackend { get; }
Property Value
Type | Description |
---|---|
ITensorData |
dataType
The data type of the elements of the tensor.
Declaration
public abstract DataType dataType { get; }
Property Value
Type | Description |
---|---|
DataType |
shape
The shape of the tensor, as a TensorShape
.
Declaration
public TensorShape shape { get; }
Property Value
Type | Description |
---|---|
TensorShape |
Methods
AttachToDevice(ITensorData)
Associates a tensor with the block of data on a device. Sentis downloads from source
on first access.
Make sure source
contains initialized and valid data that represents tensor values.
Declaration
public void AttachToDevice(ITensorData source)
Parameters
Type | Name | Description |
---|---|---|
ITensorData | source | The data on device to associate to the tensor. |
CompleteAllPendingOperations()
Completes all scheduled tensor operations on device.
Declaration
public void CompleteAllPendingOperations()
CompleteOperationsAndDownload()
Blocking call to make tensor data read/write.
Issues a blocking download of the internal data. And converts tensorData to BurstTensorData
Declaration
public void CompleteOperationsAndDownload()
CompleteOperationsAndDownloadAsync()
Non blocking call to make tensor data read/write.
Issues a non blocking download of the internal data. And converts tensorData to BurstTensorData
Declaration
public Task<bool> CompleteOperationsAndDownloadAsync()
Returns
Type | Description |
---|---|
Task<bool> | The async task. |
DetachFromDevice(bool)
Synchronizes the tensor data with the data on the device, then remove the tensor from the device.
Declaration
public ITensorData DetachFromDevice(bool disposeDeviceData = true)
Parameters
Type | Name | Description |
---|---|---|
bool | disposeDeviceData | Whether to free the space on device after detaching. |
Returns
Type | Description |
---|---|
ITensorData | The detached tensor data. |
Dispose()
Disposes of the tensor and any associated memory.
Declaration
public void Dispose()
~Tensor()
Dispose of the tensor and any associated memory.
Declaration
protected ~Tensor()
IsReadbackRequestDone()
Checks if asynchronous readback request it done.
Returns true if async readback is successful.
Declaration
public bool IsReadbackRequestDone()
Returns
Type | Description |
---|---|
bool | Whether the async readback request is successful. |
ReadbackRequest(Action<bool>)
Schedules asynchronous download of the internal data.
Declaration
public void ReadbackRequest(Action<bool> callback = null)
Parameters
Type | Name | Description |
---|---|---|
Action<bool> | callback | Callback invoked when async readback is finished. Return value indicates if async readback is successful. |
ReadbackRequestAsync()
Schedules asynchronous download task of the internal data.
Boolean indicates if async readback is successful.
Declaration
public Task<bool> ReadbackRequestAsync()
Returns
Type | Description |
---|---|
Task<bool> | awaitable task for when the readback request is successful. |
Reshape(TensorShape)
Change the shape of a tensor without changing the backing data.
The new shape must be the same length as the current shape, and the data cannot be on the GPUPixel backend.
Declaration
public void Reshape(TensorShape shape)
Parameters
Type | Name | Description |
---|---|---|
TensorShape | shape | The new shape for the tensor. |
ToString()
Returns a string that represents the Tensor
.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
string | String representation of tensor. |
Overrides
UploadToDevice(ITensorData)
Uploads the tensor data to the destination data location on device.
Declaration
public abstract void UploadToDevice(ITensorData destination)
Parameters
Type | Name | Description |
---|---|---|
ITensorData | destination | The data on device to upload the tensor data to. |