From 6ff001c125c81a942f139dc1cd787dc8121390a6 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 7 Jun 2021 14:33:02 -0700 Subject: [PATCH] DOC Improve documentation for LayerNorm (#59178) Summary: Closes https://github.com/pytorch/pytorch/issues/51455 I think the current implementation is aggregating over the correct dimensions. The shape of `normalized_shape` is only used to determine the dimensions to aggregate over. The actual values of `normalized_shape` are used when `elementwise_affine=True` to initialize the weights and biases. This PR updates the docstring to clarify how `normalized_shape` is used. Here is a short script comparing the implementations for tensorflow and pytorch: ```python import torch import torch.nn as nn import tensorflow as tf from tensorflow.keras.layers import LayerNormalization rng = np.random.RandomState() x = rng.randn(10, 20, 64, 64).astype(np.float32) # slightly non-trival x[:, :10, ...] = x[:, :10, ...] * 10 + 20 x[:, 10:, ...] = x[:, 10:, ...] * 30 - 100 # Tensorflow Layer norm x_tf = tf.convert_to_tensor(x) layer_norm_tf = LayerNormalization(axis=[-3, -2, -1], epsilon=1e-5) output_tf = layer_norm_tf(x_tf) output_tf_np = output_tf.numpy() # PyTorch Layer norm x_torch = torch.as_tensor(x) layer_norm_torch = nn.LayerNorm([20, 64, 64], elementwise_affine=False) output_torch = layer_norm_torch(x_torch) output_torch_np = output_torch.detach().numpy() # check tensorflow and pytorch torch.testing.assert_allclose(output_tf_np, output_torch_np) # manual comutation manual_output = ((x_torch - x_torch.mean(dim=(-3, -2, -1), keepdims=True)) / (x_torch.var(dim=(-3, -2, -1), keepdims=True, unbiased=False) + 1e-5).sqrt()) torch.testing.assert_allclose(output_torch, manual_output) ``` To get to the layer normalization as shown here: Screen Shot 2021-05-29 at 2 13 52 PM One needs to pass in `normalized_shape` with shape `x.dim() - 1` with the size of the channels and all spatial dimensions. Pull Request resolved: https://github.com/pytorch/pytorch/pull/59178 Reviewed By: ejguan Differential Revision: D28931877 Pulled By: jbschlosser fbshipit-source-id: 193e05205b9085bb190c221428c96d2ca29f2a70 --- docs/source/_static/img/nn/layer_norm.jpg | Bin 0 -> 70786 bytes torch/nn/modules/normalization.py | 35 +++++++++++++--------- 2 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 docs/source/_static/img/nn/layer_norm.jpg diff --git a/docs/source/_static/img/nn/layer_norm.jpg b/docs/source/_static/img/nn/layer_norm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07b031b81c7c5847fbaeac0741fda2cdb60a17a6 GIT binary patch literal 70786 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 input = torch.randn(20, 5, 10, 10) - >>> # With Learnable Parameters - >>> m = nn.LayerNorm(input.size()[1:]) - >>> # Without Learnable Parameters - >>> m = nn.LayerNorm(input.size()[1:], elementwise_affine=False) - >>> # Normalize over last two dimensions - >>> m = nn.LayerNorm([10, 10]) - >>> # Normalize over last dimension of size 10 - >>> m = nn.LayerNorm(10) - >>> # Activating the module - >>> output = m(input) + >>> # NLP Example + >>> batch, sentence_length, embedding = 20, 5, 10 + >>> embedding = torch.randn(batch, sentence_length, embedding) + >>> layer_norm = nn.LayerNorm(embedding) + >>> # Activate module + >>> layer_norm(embedding) + >>> # Image Example + >>> N, C, H, W = 20, 5, 10, 10 + >>> input = torch.randn(N, C, H, W) + >>> # Normalize over the last three dimensions (i.e. the channel and spatial dimensions) + >>> # as shown in the image below + >>> layer_norm = nn.LayerNorm([C, H, W]) + >>> output = layer_norm(input) + + .. image:: ../_static/img/nn/layer_norm.jpg + :scale: 50 % + """ __constants__ = ['normalized_shape', 'eps', 'elementwise_affine'] normalized_shape: Tuple[int, ...]