Struct TensorShape
TensorShape are immutable representation of a Tensor dimensions and rank. Depending on which constructor is used, the TensorShape will either be rank 8 and channels last (ie NHWC) or actual rank with unnamed tensor dimensions when using the constructor that takes int[]. With legacy use (explicit named constructors) of TensorShape an axis can be of size 1. For example, a tensor without spatial information will be N,1,1,C. With the use of TensorShape via the int[] constructor, then axes can have values of 0.
Namespace: Unity.Barracuda
Syntax
public struct TensorShape
Constructors
TensorShape(Int32)
Create a TensorShape of shape [1,1,N,1,1,1,1,1].
Declaration
public TensorShape(int n)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
TensorShape(Int32, Int32)
Create a TensorShape of shape [1,1,N,1,1,1,1,C].
Declaration
public TensorShape(int n, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | c | channels  | 
TensorShape(Int32, Int32, Int32)
Create a TensorShape of shape [1,1,N,1,1,1,W,C].
Declaration
public TensorShape(int n, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
TensorShape(Int32, Int32, Int32, Int32)
Create a TensorShape of shape [1,1,N,1,1,H,W,C].
Declaration
public TensorShape(int n, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
TensorShape(Int32, Int32, Int32, Int32, Int32)
Create a TensorShape of shape [1,1,N,1,D,H,W,C].
Declaration
public TensorShape(int n, int d, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
TensorShape(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32)
Create a TensorShape of shape [S,R,N,T,D,H,W,C]. Currently seqLen must be 1.
Declaration
public TensorShape(int s, int r, int n, int t, int d, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | s | sequence  | 
| Int32 | r | direction  | 
| Int32 | n | batch  | 
| Int32 | t | time  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
TensorShape(Int32[], Boolean)
Create a TensorShape of arbitrary shape.
Declaration
public TensorShape(int[] shape, bool unnamedDimensions = false)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32[] | shape | shape as int array  | 
| Boolean | unnamedDimensions | create the shape with no specific, named layout  | 
Fields
C
Channels dimension index number
Declaration
public const int C = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
D
Depth dimension index number
Declaration
public const int D = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
DataBatch
Batch dimension index number
Declaration
public const int DataBatch = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
DataChannel
Data channel dimension index number
Declaration
public const int DataChannel = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
DataFeature0
Data feature 0 dimension index number
Declaration
public const int DataFeature0 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
DataFeature1
Data feature 1 dimension index number
Declaration
public const int DataFeature1 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
DataFeature2
Data feature 2 dimension index number
Declaration
public const int DataFeature2 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
DataFeature3
Data feature 3 dimension index number
Declaration
public const int DataFeature3 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
DataFeatures
Data features
Declaration
public static readonly int[] DataFeatures
Field Value
| Type | Description | 
|---|---|
| Int32[] | 
H
Height dimension index number
Declaration
public const int H = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
KernelInChannel
Kernel input channel dimension
Declaration
public const int KernelInChannel = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
KernelOutChannel
Kernel output channel dimension
Declaration
public const int KernelOutChannel = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
KernelSpatial0
Kernel spatial dimension 0
Declaration
public const int KernelSpatial0 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
KernelSpatial1
Kernel spatial dimension 1
Declaration
public const int KernelSpatial1 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
KernelSpatial2
Kernel spatial dimension 2
Declaration
public const int KernelSpatial2 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
KernelSpatial3
Kernel spatial dimension 3
Declaration
public const int KernelSpatial3 = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
KernelSpatials
Kernel spatial dimensions
Declaration
public static readonly int[] KernelSpatials
Field Value
| Type | Description | 
|---|---|
| Int32[] | 
MaxRank
Max rank
Declaration
public const int MaxRank = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
NumberOfDirections
Sequence length dimension index number
Declaration
public const int NumberOfDirections = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
SequenceLength
Sequence length dimension index number
Declaration
public const int SequenceLength = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
W
Width dimension index number
Declaration
public const int W = null
Field Value
| Type | Description | 
|---|---|
| Int32 | 
Properties
batch
Return the number of batch.
Declaration
public readonly int batch { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
channels
Return the number of channels.
Declaration
public readonly int channels { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
depth
Return the spatial depth (axis is DataFeature2).
Declaration
public readonly int depth { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
dimensions
Return the count of non-unit dimension of this shape. For example [N,1,1,C] dimensions is 2.
Declaration
public readonly int dimensions { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
flatHeight
Return the number of batch.
Declaration
public readonly int flatHeight { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
flatWidth
Return the TDHWC.
Declaration
public readonly int flatWidth { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
hasNamedDimensions
Whether this shape makes use of named dimensions or is nameless.
Declaration
public readonly bool hasNamedDimensions { get; }
Property Value
| Type | Description | 
|---|---|
| Boolean | 
height
Return the spatial height (axis is DataFeature1).
Declaration
public readonly int height { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
Item[Int32]
Indexer to return a dimension of this tensorShape as [S,R,N,T,D,H,W,C] Prefer this over ToArray() to avoid GC allocation/collection.
Declaration
public int this[int axis] { get; }
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | axis | axis  | 
Property Value
| Type | Description | 
|---|---|
| Int32 | 
kernelCount
Kernel dimension ordering is [D,H,W,C,K] for efficiency purpose. Return kernel count (aka the number of output channels of the associated operator).
Declaration
public readonly int kernelCount { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
kernelDepth
Kernel dimension ordering is [D,H,W,C,K] for efficiency purpose. Return kernel depth (aka the number of input channels of the associated operator).
Declaration
public readonly int kernelDepth { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
kernelHeight
Kernel dimension ordering is [D,H,W,C,K] for efficiency purpose. Return kernel height.
Declaration
public readonly int kernelHeight { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
kernelSpatialDepth
Kernel dimension ordering is [D,H,W,C,K] for efficiency purpose. Return kernel intermediate dimension 0.
Declaration
public readonly int kernelSpatialDepth { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
kernelWidth
Kernel dimension ordering is [D,H,W,C,K] for efficiency purpose. Return kernel width.
Declaration
public readonly int kernelWidth { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
length
Return the total number of elements represented by this shape.
Declaration
public readonly int length { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
numberOfDirections
Return the number of direction.
Declaration
public readonly int numberOfDirections { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
rank
Always 8 if legacy, named constructors are used otherwise the actual rank.
Look also at the dimensions property.
Declaration
public readonly int rank { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
sequenceLength
Return the number of sequence.
Declaration
public readonly int sequenceLength { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
width
Return the spatial width (axis is DataFeature0).
Declaration
public readonly int width { get; }
Property Value
| Type | Description | 
|---|---|
| Int32 | 
Methods
AsNamed()
Declaration
public TensorShape AsNamed()
Returns
| Type | Description | 
|---|---|
| TensorShape | 
AsUnnamed()
Declaration
public TensorShape AsUnnamed()
Returns
| Type | Description | 
|---|---|
| TensorShape | 
Axis(Int32)
Allow to use negative axis to access tensorShape backward.
axis should be from -rank to rank (exclusive).
Declaration
public int Axis(int axis)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | axis | axis  | 
Returns
| Type | Description | 
|---|---|
| Int32 | adjusted axis  | 
Equals(System.Object)
Compares this object to other object
Declaration
public override bool Equals(System.Object obj)
Parameters
| Type | Name | Description | 
|---|---|---|
| System.Object | obj | other object  | 
Returns
| Type | Description | 
|---|---|
| Boolean | 
  | 
Flatten()
Return a TensorShape of dimensions [S,R,N,1,1,1,1,TDHWC]
Declaration
public TensorShape Flatten()
Returns
| Type | Description | 
|---|---|
| TensorShape | new TensorShape  | 
GetHashCode()
Object hash code
Declaration
public override int GetHashCode()
Returns
| Type | Description | 
|---|---|
| Int32 | object hash code  | 
GetPositionsFromIndex(Int32, ref Int32, ref Int32, ref Int32, ref Int32)
Given an offset in memory return the dimensions indices of the element as [,,N,,,H,W,C].
Declaration
public void GetPositionsFromIndex(int index, ref int n, ref int h, ref int w, ref int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | index | one dimensional index (offset) in the memory  | 
| Int32 | n | batch  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
GetPositionsFromIndex(Int32, ref Int32, ref Int32, ref Int32, ref Int32, ref Int32, ref Int32, ref Int32, ref Int32)
Given an offset in memory return the dimensions indices of the element as [S,R,N,T,D,H,W,C].
Declaration
public void GetPositionsFromIndex(int index, ref int s, ref int r, ref int n, ref int t, ref int d, ref int h, ref int w, ref int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | index | one dimensional index (offset) in the memory  | 
| Int32 | s | sequence  | 
| Int32 | r | direction  | 
| Int32 | n | batch  | 
| Int32 | t | time  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Index(Int32, Int32)
Given an element dimensions indices [0,0,N,0,0,0,0,C] return this element offset in memory.
Declaration
public int Index(int n, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
Index(Int32, Int32, Int32, Int32)
Given an element dimensions indices [0,0,N,0,0,H,W,C] return this element offset in memory.
Declaration
public int Index(int n, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
Index(Int32, Int32, Int32, Int32, Int32)
Given an element dimensions indices [0,0,N,0,D,H,W,C] return this element offset in memory.
Declaration
public int Index(int n, int d, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
Index(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32)
Given an element dimensions indices [S,R,N,T,D,H,W,C] return this element offset in memory.
Declaration
public int Index(int s, int r, int n, int t, int d, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | s | sequence  | 
| Int32 | r | direction  | 
| Int32 | n | batch  | 
| Int32 | t | time  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
IndexWithBroadcast(Int32, Int32, Int32, Int32)
Given an element dimensions indices [0,0,N,0,0,H,W,C] with broadcast support, return this element offset in memory.
Declaration
public int IndexWithBroadcast(int n, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | 
IndexWithBroadcast(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32)
Given an element dimensions indices [S,R,N,T,D,H,W,C] with broadcast support, return this element offset in memory.
Declaration
public int IndexWithBroadcast(int s, int r, int n, int t, int d, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | s | sequence  | 
| Int32 | r | direction  | 
| Int32 | n | batch  | 
| Int32 | t | time  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
IndexWithClamp(Int32, Int32, Int32, Int32)
Given an element dimensions indices [1,N,1,1,1,H,W,C] return this element offset in memory, clamping indices to tensor dimensions.
Declaration
public int IndexWithClamp(int n, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
IndexWithClamp(Int32, Int32, Int32, Int32, Int32)
Given an element dimensions indices [1,N,1,1,D,H,W,C] return this element offset in memory, clamping indices to tensor dimensions.
Declaration
public int IndexWithClamp(int n, int d, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | n | batch  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
IndexWithClamp(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32)
Given an element dimensions indices [S,R,N,T,D,H,W,C] return this element offset in memory, clamping indices to tensor dimensions.
Declaration
public int IndexWithClamp(int s, int r, int n, int t, int d, int h, int w, int c)
Parameters
| Type | Name | Description | 
|---|---|---|
| Int32 | s | sequence  | 
| Int32 | r | direction  | 
| Int32 | n | batch  | 
| Int32 | t | time  | 
| Int32 | d | depth  | 
| Int32 | h | height  | 
| Int32 | w | width  | 
| Int32 | c | channels  | 
Returns
| Type | Description | 
|---|---|
| Int32 | one dimensional index (offset in the flat memory region)  | 
Squeeze()
Remove single-dimensional entries from the shape. [s=1,r=1,b=4,t=1,d=1h=1,w=1,c=128] => [s=1,r=1,b=1,t=1,d=1,h=1,w=4,c=128]
Declaration
public TensorShape Squeeze()
Returns
| Type | Description | 
|---|---|
| TensorShape | new TensorShape  | 
ToArray()
Return an array representation of this tensorShape as [S,R,N,T,D,H,W,C] Prefer tensorShape[x] to avoid GC allocation/collection.
Declaration
public int[] ToArray()
Returns
| Type | Description | 
|---|---|
| Int32[] | shape as int array  | 
ToString()
Object summary
Declaration
public override string ToString()
Returns
| Type | Description | 
|---|---|
| String | object summary as a string  | 
Operators
Equality(TensorShape, TensorShape)
Compares two TensorShape objects
Declaration
public static bool operator ==(TensorShape a, TensorShape b)
Parameters
| Type | Name | Description | 
|---|---|---|
| TensorShape | a | left object  | 
| TensorShape | b | right object  | 
Returns
| Type | Description | 
|---|---|
| Boolean | 
  | 
Inequality(TensorShape, TensorShape)
Compares two TensorShape objects
Declaration
public static bool operator !=(TensorShape a, TensorShape b)
Parameters
| Type | Name | Description | 
|---|---|---|
| TensorShape | a | left object  | 
| TensorShape | b | right object  | 
Returns
| Type | Description | 
|---|---|
| Boolean | 
  |