Back to Pytorch

Functional API

docs/cpp/source/api/nn/functional.md

2.12.010.1 KB
Original Source

Functional API

The torch::nn::functional namespace provides stateless versions of neural network operations. Unlike module classes, functional operations do not hold learnable parameters — you pass weights explicitly.

When to use functional vs modules:

  • Use modules (torch::nn::Conv2d) when you need learnable parameters managed automatically (training, saving, loading).
  • Use functional (torch::nn::functional::conv2d) when you already have weights as tensors, or for operations without parameters (e.g., relu).
cpp
#include <torch/nn/functional.h>
namespace F = torch::nn::functional;

// Stateless activation — no module needed
auto output = F::relu(input);

// Convolution with explicit weight tensor
auto output = F::conv2d(input, weight, F::Conv2dFuncOptions().stride(1).padding(1));

// Softmax along a dimension
auto probs = F::softmax(logits, F::SoftmaxFuncOptions(/*dim=*/1));

Activation Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Convolution Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Pooling Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Linear Functions

{doxygenfunction}
{doxygenfunction}

Dropout Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Embedding Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Normalization Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Loss Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Distance Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Vision Functions

{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}
{doxygenfunction}

Fold/Unfold

{doxygenfunction}
{doxygenfunction}

Functional Options Structs

Each functional operation that takes configuration uses a corresponding options struct. The naming convention is <Operation>FuncOptions.

Activation Options:

{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}

Convolution Options:

{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}

Pooling Options:

{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}

Other Options:

{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}
{doxygentypedef}