# Class `tensorflow::TensorShape`

Manages the dimensions of a Tensor and their sizes.

## Member Details

#### `tensorflow::TensorShape::TensorShape(gtl::ArraySlice< int64 > dim_sizes)`

Construct a `TensorShape` from the provided sizes. REQUIRES: `dim_sizes[i] >= 0`

#### `tensorflow::TensorShape::TensorShape(const TensorShapeProto &proto)`

REQUIRES: `IsValid(proto)`

#### `tensorflow::TensorShape::TensorShape()`

Create a tensor shape with no dimensions and one element, which you can then call `AddDim()` on.

#### `void tensorflow::TensorShape::AddDim(int64 size)`

Add a dimension to the end ("inner-most"). REQUIRES: `size >= 0`

#### `void tensorflow::TensorShape::AppendShape(const TensorShape &shape)`

Appends all the dimensions from `shape`.

#### `void tensorflow::TensorShape::InsertDim(int d, int64 size)`

Insert a dimension somewhere in the `TensorShape`. REQUIRES: `0 <= d <= dims()` REQUIRES: `size >= 0`

#### `void tensorflow::TensorShape::set_dim(int d, int64 size)`

Modifies the size of the dimension `d` to be `size` REQUIRES: `0 <= d < dims()` REQUIRES: `size >= 0`

#### `void tensorflow::TensorShape::RemoveDim(int d)`

Removes dimension `d` from the `TensorShape`. REQUIRES: `0 <= d < dims()`

#### `int64 tensorflow::TensorShape::dim_size(int d) const`

Returns the number of elements in dimension `d`. REQUIRES: `0 <= d < dims()`

#### `gtl::ArraySlice<int64> tensorflow::TensorShape::dim_sizes() const`

Returns sizes of all dimensions.

#### `int64 tensorflow::TensorShape::num_elements() const`

Returns the number of elements in the tensor.

We use `int64` and not `size_t` to be compatible with `Eigen::Tensor` which uses `ptrdiff_t`.

#### `bool tensorflow::TensorShape::IsSameSize(const TensorShape &b) const`

Returns true if `*this` and `b` have the same sizes. Ignores dimension names.

#### `void tensorflow::TensorShape::AsProto(TensorShapeProto *proto) const`

Fill `*proto` from `*this`.

#### `Eigen::DSizes< Eigen::DenseIndex, NDIMS > tensorflow::TensorShape::AsEigenDSizes() const`

Fill `*dsizes` from `*this`.

#### `Eigen::DSizes< Eigen::DenseIndex, NDIMS > tensorflow::TensorShape::AsEigenDSizesWithPadding() const`

Same as `AsEigenDSizes()` but allows for `NDIMS > dims()` in which case we pad the rest of the sizes with 1.

#### `TensorShapeIter tensorflow::TensorShape::begin() const`

For iterating through the dimensions.

#### `string tensorflow::TensorShape::DebugString() const`

For error messages.

#### `static bool tensorflow::TensorShape::IsValid(const TensorShapeProto &proto)`

Returns `true` iff `proto` is a valid tensor shape.