---
myst:
  html_meta:
    description: Embedding layers in PyTorch C++ — Embedding and EmbeddingBag for sparse and dense lookups.
    keywords: PyTorch, C++, Embedding, EmbeddingBag, lookup table, sparse, NLP
---

# Embedding Layers

Embedding layers map discrete tokens (words, categories, IDs) to dense vector
representations. They are the foundation of NLP models and recommendation systems.

- **Embedding**: Standard lookup table that maps indices to dense vectors
- **EmbeddingBag**: Computes sums or means of embeddings (efficient for sparse features)

**Key parameters:**

- `num_embeddings`: Size of the vocabulary (number of unique tokens)
- `embedding_dim`: Dimension of each embedding vector
- `padding_idx`: Index that outputs zeros (useful for padding tokens)

## Embedding

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

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

**Example:**

```cpp
auto embedding = torch::nn::Embedding(
    torch::nn::EmbeddingOptions(10000, 256)  // num_embeddings, embedding_dim
        .padding_idx(0));

auto indices = torch::tensor({1, 2, 3, 4});
auto embedded = embedding->forward(indices);  // [4, 256]
```

## EmbeddingBag

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

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