---
title: BNNS.Shape
framework: accelerate
role: symbol
role_heading: Enumeration
path: accelerate/bnns/shape
---

# BNNS.Shape

Constants that describe the size and data layout of an n-dimensional array descriptor.

## Declaration

```swift
enum Shape
```

## Topics

### Creating a Shape

- [init(_:dataLayout:stride:)](accelerate/bnns/shape/init(_:datalayout:stride:).md)
- [init(arrayLiteral:)](accelerate/bnns/shape/init(arrayliteral:).md)

### Specifying the Data Layout of a Shape

- [BNNS.DataLayout](accelerate/bnns/datalayout.md)

### Shape Constants

- [BNNS.Shape.vector(_:stride:)](accelerate/bnns/shape/vector(_:stride:).md)
- [BNNS.Shape.matrixColumnMajor(_:_:stride:)](accelerate/bnns/shape/matrixcolumnmajor(_:_:stride:).md)
- [BNNS.Shape.matrixRowMajor(_:_:stride:)](accelerate/bnns/shape/matrixrowmajor(_:_:stride:).md)
- [BNNS.Shape.matrixFirstMajor(_:_:stride:)](accelerate/bnns/shape/matrixfirstmajor(_:_:stride:).md)
- [BNNS.Shape.matrixLastMajor(_:_:stride:)](accelerate/bnns/shape/matrixlastmajor(_:_:stride:).md)
- [BNNS.Shape.imageCHW(_:_:_:stride:)](accelerate/bnns/shape/imagechw(_:_:_:stride:).md)
- [BNNS.Shape.tensor3DFirstMajor(_:_:_:stride:)](accelerate/bnns/shape/tensor3dfirstmajor(_:_:_:stride:).md)
- [BNNS.Shape.tensor3DLastMajor(_:_:_:stride:)](accelerate/bnns/shape/tensor3dlastmajor(_:_:_:stride:).md)
- [BNNS.Shape.tensor3DNSE(_:_:_:stride:)](accelerate/bnns/shape/tensor3dnse(_:_:_:stride:).md)
- [BNNS.Shape.tensor3DSNE(_:_:_:stride:)](accelerate/bnns/shape/tensor3dsne(_:_:_:stride:).md)
- [BNNS.Shape.convolutionWeightsOIHW(_:_:_:_:stride:)](accelerate/bnns/shape/convolutionweightsoihw(_:_:_:_:stride:).md)
- [BNNS.Shape.tensor4DFirstMajor(_:_:_:_:stride:)](accelerate/bnns/shape/tensor4dfirstmajor(_:_:_:_:stride:).md)
- [BNNS.Shape.tensor4DLastMajor(_:_:_:_:stride:)](accelerate/bnns/shape/tensor4dlastmajor(_:_:_:_:stride:).md)
- [BNNS.Shape.tensor5DFirstMajor(_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor5dfirstmajor(_:_:_:_:_:stride:).md)
- [BNNS.Shape.tensor5DLastMajor(_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor5dlastmajor(_:_:_:_:_:stride:).md)
- [BNNS.Shape.tensor6DFirstMajor(_:_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor6dfirstmajor(_:_:_:_:_:_:stride:).md)
- [BNNS.Shape.tensor6DLastMajor(_:_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor6dlastmajor(_:_:_:_:_:_:stride:).md)
- [BNNS.Shape.tensor7DFirstMajor(_:_:_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor7dfirstmajor(_:_:_:_:_:_:_:stride:).md)
- [BNNS.Shape.tensor7DLastMajor(_:_:_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor7dlastmajor(_:_:_:_:_:_:_:stride:).md)
- [BNNS.Shape.tensor8DFirstMajor(_:_:_:_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor8dfirstmajor(_:_:_:_:_:_:_:_:stride:).md)
- [BNNS.Shape.tensor8DLastMajor(_:_:_:_:_:_:_:_:stride:)](accelerate/bnns/shape/tensor8dlastmajor(_:_:_:_:_:_:_:_:stride:).md)

### Inspecting the Properties of a Shape

- [batchStride](accelerate/bnns/shape/batchstride.md)
- [layout](accelerate/bnns/shape/layout.md)
- [rank](accelerate/bnns/shape/rank.md)
- [size](accelerate/bnns/shape/size.md)
- [stride](accelerate/bnns/shape/stride.md)

### Default Implementations

- [ExpressibleByArrayLiteral Implementations](accelerate/bnns/shape/expressiblebyarrayliteral-implementations.md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [Escapable](swift/escapable.md)
- [ExpressibleByArrayLiteral](swift/expressiblebyarrayliteral.md)

## See Also

### N-dimensional array descriptor essentials

- [BNNSLayerData](accelerate/bnnslayerdata.md)
- [BNNSDataLayout](accelerate/bnnsdatalayout.md)
- [BNNSDataType](accelerate/bnnsdatatype.md)
- [BNNSNDArrayDescriptor](accelerate/bnnsndarraydescriptor.md)
- [BNNSDataLayoutGetRank(_:)](accelerate/bnnsdatalayoutgetrank(_:).md)
