code: def timestep_embedding(
      timesteps, dim, max_period=10000, repeat_only=False
  ):
      """
      Create sinusoidal timestep embeddings.
      :param timesteps: a 1-D Tensor of N indices, one per batch element.
                        These may be fractional.
      :param dim: the dimension of the output.
      :param max_period: controls the minimum frequency of the embeddings.
      :return: an [N x dim] Tensor of positional embeddings.
      """
      if not repeat_only:
          half = dim // 2
          freqs = torch.exp(
              -math.log(max_period)
              * torch.arange(start=0, end=half, dtype=torch.float32)
              / half
          ).to(device=timesteps.device)
          args = timesteps[:, None].float() * freqs[None]
          embedding = torch.cat(
              [torch.cos(args), torch.sin(args)], dim=-1
          )
          if dim % 2:
              embedding = torch.cat(
                  [embedding, torch.zeros_like(embedding[:, :1])],
                  dim=-1,
              )
      else:
          embedding = repeat(timesteps, "b -> b d", d=dim)
      return embedding
  
imports: import math
  from typing import Optional
  import torch
  import torch.nn
  from einops import rearrange, repeat
label_desc: Use image node_id 5 for calling a global function with example usage: timestep_embedding(timesteps, dim, max_period, repeat_only) and returns: embedding