4.1.9. Shape

class Shape

Data structure to represent the shape of the node.

Examples: Shape() == Shape({1, 1, 1, …}, 1): scalar Shape({}) == Shape({1, 1, 1, …}, 1): scalar Shape({n}) == Shape({n, 1, 1, …}, 1): column vector Shape({n, m}) == Shape({n, m, 1, …}, 1): matrix Shape({…}, k): k-parallelized data (mini-batch)

Public Functions

Shape()

Creates a new scalar Shape object.

Shape(std::initializer_list<std::uint32_t> dims, std::uint32_t batch = 1)

Creates a new Shape object.

Parameters
  • dims: List of the dimension sizes.
  • batch: Batch size.

Shape(const std::vector<std::uint32_t> &dims, std::uint32_t batch = 1)

Creates a new Shape object.

Parameters
  • dims: List of the dimension sizes.
  • batch: Batch size.

std::uint32_t operator[](std::uint32_t i) const

Returns the size of the i-th dimension.

Return
Size of the i-th dimension.
Parameters
  • i: Dimension number to check.

const std::vector<std::uint32_t> dims() const

Returns the dimension array.

Return
Copy of the dimension array.

std::uint32_t depth() const

Returns the depth (length of non-1 dimensions) of the shape.

Return
The depth of the shape.

std::uint32_t batch() const

Returns the batch size.

Return
Batch size.

std::uint32_t volume() const

Returns the number of elements in each sample. This value is equal to the product of all dimensions.

Return
Number of elements.

std::uint32_t lower_volume(std::uint32_t dim) const

Returns the number of elements in 1 to specified dim.

Return
dims[0] * dims[1] * ... * dims[dim-1]
Parameters
  • dim: Upper bound of the dimension.

std::uint32_t size() const

Returns the number of elements in all samples of the mini-batch. This value is equal to batch() * volume().

Return
Number of elements.

std::string to_string() const

Returns a string representation of the shape. The format is: “[n,m,…]xk”

Return
Encoded string.

bool operator==(const Shape &rhs) const

Compares this and other shape.

Return
true if this and rhs are same, false otherwise.
Parameters
  • rhs: Shape object to compare.

bool operator!=(const Shape &rhs) const

Compares this and other shape.

Return
true if this and rhs are not same, false otherwise.
Parameters
  • rhs: Shape object to compare.

bool has_batch() const

Checks whether the shape has minibatch or not.

Return
true if the shape has minibatch, false otherwise.

bool has_compatible_batch(const Shape &rhs) const

Checks whether two batch size is compatible (broadcastable) or not.

Return
true if both batch size is compatible, false otherwise.
Parameters
  • rhs: Shape object to compare.

bool is_scalar() const

Checks whether the shape is a scalar or not.

Return
true if the shape is a scalar, false otherwise.

bool is_column_vector() const

Checks whether the shape is a column vector or not.

Return
true if the shape is a column vector, false otherwise.

bool is_matrix() const

Checks whether the shape is a vector or a matrix, or not.

Return
true if the shape is a vector or a matrix, false otherwise.

bool has_same_dims(const Shape &rhs) const

Checks whether two shapes have completely same dimensions.

Return
true if both shape have same dimensions, false otherwise.
Parameters
  • rhs: Shape object to compare.

bool has_same_loo_dims(const Shape &rhs, std::uint32_t dim) const

Checks whether two shapes have same dimensions without an axis. (LOO: leave one out)

Return
true if both shape have same dimensions regardless the dimension dim, false otherwise.
Parameters
  • rhs: Shape object to compare.
  • dim: Dimension to be ignored.

Shape resize_dim(std::uint32_t dim, std::uint32_t m) const

Creates a new shape which have one different dimension.

Return
New shape.
Parameters
  • dim: Dimension to be changed.
  • m: New size of the dimension dim.

Shape resize_batch(std::uint32_t batch) const

Creates a new shape which have specified batch size.

Return
New shape.
Parameters
  • batch: New batch size.

void update_dim(std::uint32_t dim, std::uint32_t m)

Directly updates a specified dimension.

Parameters
  • dim: Dimension to be updated.
  • m: New size of the dimension dim.

void update_batch(std::uint32_t batch)

Directly updates the batch size.

Parameters
  • batch: New batch size.