# Gluon Neural Network Layers

## Overview

This document lists the neural network blocks in Gluon:

```eval_rst
.. currentmodule:: mxnet.gluon.nn
```


## Basic Layers


```eval_rst
.. autosummary::
    :nosignatures:

    Dense
    Dropout
    BatchNorm
    InstanceNorm
    LayerNorm
    Embedding
    Flatten
    Lambda
    HybridLambda
```


## Convolutional Layers


```eval_rst
.. autosummary::
    :nosignatures:

    Conv1D
    Conv2D
    Conv3D
    Conv1DTranspose
    Conv2DTranspose
    Conv3DTranspose
```



## Pooling Layers


```eval_rst
.. autosummary::
    :nosignatures:

    MaxPool1D
    MaxPool2D
    MaxPool3D
    AvgPool1D
    AvgPool2D
    AvgPool3D
    GlobalMaxPool1D
    GlobalMaxPool2D
    GlobalMaxPool3D
    GlobalAvgPool1D
    GlobalAvgPool2D
    GlobalAvgPool3D
    ReflectionPad2D
```

## Activation Layers


```eval_rst
.. autosummary::
    :nosignatures:

    Activation
    LeakyReLU
    PReLU
    ELU
    SELU
    Swish
```


## API Reference

<script type="text/javascript" src='../../../_static/js/auto_module_index.js'></script>

```eval_rst
.. automodule:: mxnet.gluon.nn
    :members:
    :imported-members:
    :exclude-members: Block, HybridBlock, SymbolBlock, Sequential, HybridSequential
```

<script>auto_index("api-reference");</script>
