---
title: "ClikaRT::nn::Sequential"
sidebar_label: "Sequential"
description: "Runs its steps in order, each fed the previous step's output. A step is a module (registered under its position as its name, so named_children() and named_parameters() walk it: 0.weight, 1.bias) or a…"
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--class">class</span>

**Header:** `ClikaRT/nn/containers.h`  
**Inherits:** [`ClikaRT::nn::Module`](./Module.md)

Runs its steps in order, each fed the previous step's output.

A step is a module (registered under its position as its name, so [`named_children()`](./Module.md#named_children) and [`named_parameters()`](./Module.md#named_parameters) walk it: `0.weight`, `1.bias`) or a plain callable, which registers no child. The chain stops at the first failing step and returns that failure.

```cpp
auto mlp = std::make_shared<ClikaRT::nn::Sequential>(
    ClikaRT::nn::Linear::make(768, 3072),
    std::make_shared<ClikaRT::nn::GELU>(),
    ClikaRT::nn::Linear::make(3072, 768));
auto y = (*mlp)(x);
```

## Types

### using Step {#Step}

<div class="api-signature">

`using` **`Step`** `=` `std::function<`[`Result`](../Result.md)`<`[`Tensor`](../Tensor.md)`>(`[`Tensor`](../Tensor.md)`)>`

</div>

One step: from the current tensor to the next, or to the failure that stops the chain.

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 47

</div>

## Member functions

### Sequential() {#Sequential}

<div class="api-signature">

**`Sequential`**() `=default`

</div>

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 49

</div>

### Sequential(shared\_ptr\<Ms\>...) {#Sequential-2}

<div class="api-signature">

`template <``class...` `Ms``>`<br />`explicit` **`Sequential`**(`std::shared_ptr<Ms>...` `modules`)

</div>

Constructs from modules, appended in argument order.

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 53

</div>

### push\_back(shared\_ptr\<M\>) {#push_back}

<div class="api-signature">

`template <``class M`, `std::enable_if_t<std::is_base_of<`[`nn::Module`](./Module.md)`, M>::value, int>` `=` `0``>`<br />[`Sequential`](./Sequential.md)`&` **`push_back`**(`std::shared_ptr<M>` `module`)

</div>

Appends a module. It is registered under its position (`"0"`, `"1"`, ...) and runs through its `forward_impl(Tensor)`.

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 61

</div>

### push\_back(Step) {#push_back-2}

<div class="api-signature">

[`Sequential`](./Sequential.md)`&` **`push_back`**([`Step`](./Sequential.md#Step) `step`)

</div>

Appends a callable step (a lambda, a function). It registers no child and holds no weights.

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 73

</div>

### size() {#size}

<div class="api-signature">

`std::size_t` **`size`**() `const`

</div>

The number of steps, modules and callables alike.

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 79

</div>

### empty() {#empty}

<div class="api-signature">

`bool` **`empty`**() `const`

</div>

True when no step was appended.

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 81

</div>

### modules() {#modules}

<div class="api-signature">

`const std::vector<std::shared_ptr<`[`Module`](./Module.md)`>>&` **`modules`**() `const`

</div>

The modules appended so far, in order (callable steps are not modules and do not appear here).

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 84

</div>

### forward() {#forward}

<div class="api-signature">

[`Tensor`](../Tensor.md) **`forward`**([`Tensor`](../Tensor.md) `input`) `const`

</div>

[`forward_impl`](./Sequential.md#forward), unwrapped: raises [`ClikaRT::Error`](../Error.md) on failure.

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 102

</div>

### operator()() {#operator-call}

<div class="api-signature">

[`Tensor`](../Tensor.md) **`operator()`**([`Tensor`](../Tensor.md) `input`) `const`

</div>

Same as [`forward`](./Sequential.md#forward).

<div class="api-declared">

Declared in `ClikaRT/nn/containers.h`, line 106

</div>
