Class Tensor
Represents data in a multidimensional array-like structure.
Inherited Members
Namespace: Unity.Sentis
Syntax
public abstract class Tensor : IDisposable
Constructors
Tensor(TensorShape, ITensorData, ITensorAllocator)
Create a Tensor with the specified shape
, an ITensorData
data
and an ITensorAllocator allocator
.
Declaration
protected Tensor(TensorShape shape, ITensorData data = null, ITensorAllocator allocator = null)
Parameters
Type | Name | Description |
---|---|---|
TensorShape | shape | |
ITensorData | data | |
ITensorAllocator | allocator |
Fields
m_CacheIsDirty
Declaration
protected bool m_CacheIsDirty
Field Value
Type | Description |
---|---|
Boolean |
m_Disposed
Declaration
protected bool m_Disposed
Field Value
Type | Description |
---|---|
Boolean |
m_Shape
Declaration
protected TensorShape m_Shape
Field Value
Type | Description |
---|---|
TensorShape |
m_TensorAllocator
Declaration
protected ITensorAllocator m_TensorAllocator
Field Value
Type | Description |
---|---|
ITensorAllocator |
m_TensorOnDevice
Declaration
protected ITensorData m_TensorOnDevice
Field Value
Type | Description |
---|---|
ITensorData |
Properties
allocator
The allocator for the tensor. Refer to ITensorAllocator.
Declaration
public ITensorAllocator allocator { get; }
Property Value
Type | Description |
---|---|
ITensorAllocator |
dataType
The data type of the elements of the tensor.
Declaration
public abstract DataType dataType { get; }
Property Value
Type | Description |
---|---|
DataType |
isCacheNull
Declaration
protected abstract bool isCacheNull { get; }
Property Value
Type | Description |
---|---|
Boolean |
shape
The shape of the tensor, as a TensorShape
.
Declaration
public TensorShape shape { get; protected set; }
Property Value
Type | Description |
---|---|
TensorShape |
tensorOnDevice
The device-specific internal representation of the tensor data.
Declaration
public ITensorData tensorOnDevice { get; protected set; }
Property Value
Type | Description |
---|---|
ITensorData |
Methods
AllocateOnDevice(ITensorData)
Upload tensor values to the device, by associating the tensor with the uninitialized block of data on the device.
You should allocate destination
on the device. UploadToDevice
overwrites the current contents of destination
.
Sentis doesn't copy or initialize content from the tensor, regardless of the current cache or data on the device.
Declaration
public void AllocateOnDevice(ITensorData destination)
Parameters
Type | Name | Description |
---|---|---|
ITensorData | destination |
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.
Refer to PrepareCacheForAccess()
if you need to schedule the download as soon as possible.
Declaration
public void AttachToDevice(ITensorData source)
Parameters
Type | Name | Description |
---|---|---|
ITensorData | source |
ClearCache()
Declaration
protected abstract void ClearCache()
DeepCopy()
Returns a deep copy of the current Tensor.
Declaration
public abstract Tensor DeepCopy()
Returns
Type | Description |
---|---|
Tensor |
DetachFromDevice(Boolean)
Synchronizes the tensor cache with the data on the device, then remove the tensor from the device.
Declaration
public ITensorData DetachFromDevice(bool disposeDeviceData = true)
Parameters
Type | Name | Description |
---|---|---|
Boolean | disposeDeviceData |
Returns
Type | Description |
---|---|
ITensorData |
Dispose()
Disposes of the tensor and any associated memory.
Declaration
public virtual void Dispose()
Implements
Finalize()
Dispose of the tensor and any associated memory.
Declaration
protected void Finalize()
FlushCache(Boolean)
Upload the tensor cache to device memory and delete the tensor cache.
Declaration
public void FlushCache(bool uploadCache)
Parameters
Type | Name | Description |
---|---|---|
Boolean | uploadCache |
PrepareCacheForAccess(Boolean)
Read data from the device and write it to the cache.
The default value of blocking
is true
, which means this method is a blocking read.
When the value of blocking
is false, the read is non-blocking. You can keep calling the method to get the status of the asynchronous download. You can access the tensor data when the method returns true
.
Declaration
public abstract bool PrepareCacheForAccess(bool blocking = true)
Parameters
Type | Name | Description |
---|---|---|
Boolean | blocking |
Returns
Type | Description |
---|---|
Boolean |
ShallowCopy()
Returns a shallow copy of the current Tensor
. The copy shares data storage with original tensor.
Declaration
public Tensor ShallowCopy()
Returns
Type | Description |
---|---|
Tensor |
ShallowReshape(TensorShape)
Returns a shallow copy of the Tensor
with a new shape. The copy shares data storage with the original tensor.
newShape.length
must be equal to this.shape.length
.
Declaration
public abstract Tensor ShallowReshape(TensorShape newShape)
Parameters
Type | Name | Description |
---|---|---|
TensorShape | newShape |
Returns
Type | Description |
---|---|
Tensor |
TakeOwnership()
Removes system references to the tensor. The caller assumes ownership.
Declaration
public void TakeOwnership()
ToString()
Returns a string that represents the Tensor
.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
String |
Overrides
UploadIfDirty()
Declaration
protected abstract void UploadIfDirty()
UploadToDevice(ITensorData, Boolean)
Upload tensor values to the device, by associating the tensor with the uninitialized block of data on the device.
You should allocate destination
on the device. UploadToDevice
overwrites the current contents of destination
.
By default Sentis discards the local cache after you call this method. Set invalidateCacheAfterUpload
to false to keep the cache.
Declaration
public void UploadToDevice(ITensorData destination, bool invalidateCacheAfterUpload = true)
Parameters
Type | Name | Description |
---|---|---|
ITensorData | destination | |
Boolean | invalidateCacheAfterUpload |