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.
Inherited Members
Namespace: Unity.Barracuda
Syntax
[Serializable]
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 = 7
Field Value
Type | Description |
---|---|
Int32 |
D
Depth dimension index number
Declaration
public const int D = 4
Field Value
Type | Description |
---|---|
Int32 |
DataBatch
Batch dimension index number
Declaration
public const int DataBatch = 2
Field Value
Type | Description |
---|---|
Int32 |
DataChannel
Data channel dimension index number
Declaration
public const int DataChannel = 7
Field Value
Type | Description |
---|---|
Int32 |
DataFeature0
Data feature 0 dimension index number
Declaration
public const int DataFeature0 = 6
Field Value
Type | Description |
---|---|
Int32 |
DataFeature1
Data feature 1 dimension index number
Declaration
public const int DataFeature1 = 5
Field Value
Type | Description |
---|---|
Int32 |
DataFeature2
Data feature 2 dimension index number
Declaration
public const int DataFeature2 = 4
Field Value
Type | Description |
---|---|
Int32 |
DataFeature3
Data feature 3 dimension index number
Declaration
public const int DataFeature3 = 3
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 = 5
Field Value
Type | Description |
---|---|
Int32 |
KernelInChannel
Kernel input channel dimension
Declaration
public const int KernelInChannel = 6
Field Value
Type | Description |
---|---|
Int32 |
KernelOutChannel
Kernel output channel dimension
Declaration
public const int KernelOutChannel = 7
Field Value
Type | Description |
---|---|
Int32 |
KernelSpatial0
Kernel spatial dimension 0
Declaration
public const int KernelSpatial0 = 5
Field Value
Type | Description |
---|---|
Int32 |
KernelSpatial1
Kernel spatial dimension 1
Declaration
public const int KernelSpatial1 = 2
Field Value
Type | Description |
---|---|
Int32 |
KernelSpatial2
Kernel spatial dimension 2
Declaration
public const int KernelSpatial2 = 1
Field Value
Type | Description |
---|---|
Int32 |
KernelSpatial3
Kernel spatial dimension 3
Declaration
public const int KernelSpatial3 = 0
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 = 8
Field Value
Type | Description |
---|---|
Int32 |
NumberOfDirections
Sequence length dimension index number
Declaration
public const int NumberOfDirections = 1
Field Value
Type | Description |
---|---|
Int32 |
SequenceLength
Sequence length dimension index number
Declaration
public const int SequenceLength = 0
Field Value
Type | Description |
---|---|
Int32 |
W
Width dimension index number
Declaration
public const int W = 6
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(Object)
Compares this
object to other object
Declaration
public override bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
Object | obj | other object |
Returns
Type | Description |
---|---|
Boolean |
|
Overrides
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 |
Overrides
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 |
Overrides
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 |
|