Struct TensorShape
TensorShape are immutable representation of a Tensor dimensions and rank. At the moment a TensorShape is always of rank 4 and channels last ie NHWC. However an axis can be of size 1. For example a tensor without spatial information will be N,1,1,C
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[])
Create a TensorShape of arbitrary shape
.
shape
must be of length 4 [N,H,W,C] or 8 [S,R,N,T,D,H,W,C].
If shape.length
is 4 then the dimensions S,R,T and D will be defaulted to 1.
Declaration
public TensorShape(int[] shape)
Parameters
Type | Name | Description |
---|---|---|
Int32[] | shape | shape as int array |
Fields
batch
Return the number of batch.
Declaration
public readonly int batch
Field Value
Type | Description |
---|---|
Int32 |
C
Channels dimension index number
Declaration
public const int C = null
Field Value
Type | Description |
---|---|
Int32 |
channels
Return the number of channels.
Declaration
public readonly int channels
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[] |
depth
Return the spatial depth (axis is DataFeature2).
Declaration
public readonly int depth
Field Value
Type | Description |
---|---|
Int32 |
H
Height dimension index number
Declaration
public const int H = null
Field Value
Type | Description |
---|---|
Int32 |
height
Return the spatial height (axis is DataFeature1).
Declaration
public readonly int height
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
Return the number of direction.
Declaration
public readonly int numberOfDirections
Field Value
Type | Description |
---|---|
Int32 |
NumberOfDirections
Sequence length dimension index number
Declaration
public const int NumberOfDirections = null
Field Value
Type | Description |
---|---|
Int32 |
sequenceLength
Return the number of sequence.
Declaration
public readonly int sequenceLength
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 |
width
Return the spatial width (axis is DataFeature0).
Declaration
public readonly int width
Field Value
Type | Description |
---|---|
Int32 |
Properties
dimensions
Return the count of non-unit dimension of this shape. For example [N,1,1,C] dimensions is 2.
Declaration
public int dimensions { get; }
Property Value
Type | Description |
---|---|
Int32 |
flatHeight
Return the number of batch.
Declaration
public int flatHeight { get; }
Property Value
Type | Description |
---|---|
Int32 |
flatWidth
Return the TDHWC.
Declaration
public int flatWidth { 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 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 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 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 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 int kernelWidth { get; }
Property Value
Type | Description |
---|---|
Int32 |
length
Return the total number of elements represented by this shape.
Declaration
public int length { get; }
Property Value
Type | Description |
---|---|
Int32 |
rank
Always 8, look also at the dimensions
property.
Declaration
public int rank { get; }
Property Value
Type | Description |
---|---|
Int32 |
Methods
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 |
|