---
myst:
  html_meta:
    description: Linear layers in PyTorch C++ — Linear, Bilinear, and Flatten modules.
    keywords: PyTorch, C++, Linear, Bilinear, Flatten, fully connected, dense layer
---

# Linear Layers

Linear layers apply affine transformations to input data: `y = xW^T + b`.
They are the building blocks of fully-connected networks and are used for
feature transformation, classification heads, and projection layers.

- **Linear**: Standard fully-connected layer
- **Bilinear**: Bilinear transformation of two inputs
- **Identity**: Pass-through layer (useful for skip connections)
- **Flatten/Unflatten**: Reshape tensors between convolutional and linear layers

## Linear

```{doxygenclass} torch::nn::Linear
:members:
:undoc-members:
```

```{doxygenclass} torch::nn::LinearImpl
:members:
:undoc-members:
```

**Example:**

```cpp
auto linear = torch::nn::Linear(torch::nn::LinearOptions(784, 256).bias(true));
auto output = linear->forward(input);  // input: [N, 784]
```

## Bilinear

```{doxygenclass} torch::nn::Bilinear
:members:
:undoc-members:
```

```{doxygenclass} torch::nn::BilinearImpl
:members:
:undoc-members:
```

## Identity

```{doxygenclass} torch::nn::Identity
:members:
:undoc-members:
```

```{doxygenclass} torch::nn::IdentityImpl
:members:
:undoc-members:
```

## Flatten

```{doxygenclass} torch::nn::Flatten
:members:
:undoc-members:
```

```{doxygenclass} torch::nn::FlattenImpl
:members:
:undoc-members:
```

## Unflatten

```{doxygenclass} torch::nn::Unflatten
:members:
:undoc-members:
```

```{doxygenclass} torch::nn::UnflattenImpl
:members:
:undoc-members:
```
