code: def __init__(
      self, correlation, d_model, n_heads, d_keys=None, d_values=None
  ):
      super(AutoCorrelationLayer, self).__init__()
  
      d_keys = d_keys or (d_model // n_heads)
      d_values = d_values or (d_model // n_heads)
  
      self.inner_correlation = correlation
      self.query_projection = nn.Linear(d_model, d_keys * n_heads)
      self.key_projection = nn.Linear(d_model, d_keys * n_heads)
      self.value_projection = nn.Linear(d_model, d_values * n_heads)
      self.out_projection = nn.Linear(d_values * n_heads, d_model)
      self.n_heads = n_heads
  
file_path: BigDL/python/chronos/src/bigdl/chronos/model/autoformer/layers/AutoCorrelation.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  import numpy
  import math
  from math import sqrt
  import os
label_desc: Use image node_id 1 to create a new AutoCorrelationLayer object from inherited base classes: nn with example: obj = AutoCorrelationLayer(correlation, d_model, n_heads, d_keys, d_values)