docstr: Parameters
  ----------
  in_features
      Input feature size.
  d_embedding
      Output feature size, should be an even number.
  trainable
      Determine whether the coefficients needed to be updated.
  initialization
      Initialization scheme.
  sigma
      Standard deviation used for initialization='normal'
  
  Reference:
  ----------
  1. Code: https://github.com/Yura52/tabular-dl-num-embeddings
  2. Paper: On Embeddings for Numerical Features in Tabular Deep Learning, https://arxiv.org/abs/2203.05556
code: def __init__(
      self,
      in_features: int,
      d_embedding: int,
      trainable: Optional[bool] = True,
      initialization: Optional[str] = "normal",
      sigma: Optional[float] = 1.0,
  ):
      """
      Parameters
      ----------
      in_features
          Input feature size.
      d_embedding
          Output feature size, should be an even number.
      trainable
          Determine whether the coefficients needed to be updated.
      initialization
          Initialization scheme.
      sigma
          Standard deviation used for initialization='normal'
  
      Reference:
      ----------
      1. Code: https://github.com/Yura52/tabular-dl-num-embeddings
      2. Paper: On Embeddings for Numerical Features in Tabular Deep Learning, https://arxiv.org/abs/2203.05556
      """
      super().__init__()
  
      assert (
          d_embedding % 2 == 0
      ), "d_embedding mod 2 should be 0, current d_embedding is {}".format(
          d_embedding
      )
  
      if initialization == "log-linear":
          coefficients = sigma ** (
              torch.arange(d_embedding // 2) / (d_embedding // 2)
          )
          coefficients = coefficients[None].repeat(in_features, 1)
      elif initialization == "normal":
          coefficients = torch.normal(
              0.0, sigma, (in_features, d_embedding // 2)
          )
  
      if trainable:
          self.coefficients = nn.Parameter(coefficients)
      else:
          self.register_buffer("coefficients", coefficients)
  
imports: from typing import List, Optional
  import torch
  from torch import Tensor, nn
  from ..constants import CATEGORICAL, FEATURES, LABEL, LOGITS, NUMERICAL
  from .custom_transformer import CLSToken, Custom_Transformer, _TokenInitialization
  from .utils import init_weights
label_desc: Use image node_id 1 to create a new Periodic object from inherited base classes: nn with example: obj = Periodic(in_features, d_embedding, trainable, initialization, sigma)