\mathcal{N}(0, 1)
Shape:
      * Input: (*), IntTensor or LongTensor of arbitrary shape
        containing the indices to extract
  * Output: (*, H), where *** is the input shape and
    H=\text{embedding\_dim}

Note:
 Keep in mind that only a limited number of optimizers support
 sparse gradients: currently it's "optim.SGD" (*CUDA* and *CPU*),
 "optim.SparseAdam" (*CUDA* and *CPU*) and "optim.Adagrad" (*CPU*)

Note:
 When "max_norm" is not "None", "Embedding"'s forward method will
 modify the "weight" tensor in-place. Since tensors needed for
 gradient computations cannot be modified in-place, performing a
 differentiable operation on "Embedding.weight" before calling
 "Embedding"'s forward method requires cloning "Embedding.weight"
 when "max_norm" is not "None". For example:

    n, d, m = 3, 5, 7
    embedding = nn.Embedding(n, d, max_norm=True)
    W = torch.randn((m, d), requires_grad=True)
    idx = torch.tensor([1, 2])
