| using Unity.InferenceEngine; |
|
|
| namespace Unity.MLAgents.Inference |
| { |
| internal static class TensorExtensions |
| { |
| |
| public static int Batch(this Tensor tensor) |
| { |
| return tensor.shape.Batch(); |
| } |
|
|
| public static int Height(this Tensor tensor) |
| { |
| return tensor.shape.Height(); |
| } |
|
|
| public static int Width(this Tensor tensor) |
| { |
| return tensor.shape.Width(); |
| } |
|
|
| public static int Channels(this Tensor tensor) |
| { |
| return tensor.shape.Channels(); |
| } |
|
|
| public static int Length(this Tensor tensor) |
| { |
| return tensor.shape.length; |
| } |
| } |
|
|
| internal static class TensorShapeExtensions |
| { |
| public static int Batch(this TensorShape shape) |
| { |
| return shape.rank >= 1 ? shape[0] : 0; |
| } |
|
|
| public static int Height(this TensorShape shape) |
| { |
| return shape.rank >= 4 ? shape[shape.rank - 2] : 0; |
| } |
|
|
| public static int Width(this TensorShape shape) |
| { |
| return shape.rank >= 3 ? shape[shape.rank - 1] : 0; |
| } |
|
|
| public static int Channels(this TensorShape shape) |
| { |
| return shape.rank is >= 2 and < 4 ? shape[1] : shape.rank >= 4 ? shape[shape.rank - 3] : 0; |
| } |
|
|
| public static int Index(this TensorShape shape, int n, int c, int h, int w) |
| { |
| int index = |
| n * shape.Height() * shape.Width() * shape.Channels() + |
| c * shape.Height() * shape.Width() + |
| h * shape.Width() + |
| w; |
| return index; |
| } |
| } |
| } |
|
|