code: def __init__(
      self,
      model: ApproximateGP,
      grid_size: int,
      grid_bounds: Iterable[Tuple[float, float]],
      num_dim: int,
      variational_distribution: _VariationalDistribution,
      mixing_params: bool = False,
      sum_output: bool = True,
  ):
      super(
          AdditiveGridInterpolationVariationalStrategy, self
      ).__init__(
          model, grid_size, grid_bounds, variational_distribution
      )
      self.num_dim = num_dim
      self.sum_output = sum_output
      # Mixing parameters
      if mixing_params:
          self.register_parameter(
              name="mixing_params",
              parameter=torch.nn.Parameter(
                  torch.ones(num_dim) / num_dim
              ),
          )
  
file_path: gpytorch/gpytorch/variational/additive_grid_interpolation_variational_strategy.py
imports: from typing import Iterable, Optional, Tuple
  import torch
  from linear_operator.operators import LinearOperator
  from torch import LongTensor, Tensor
  from ..distributions import Delta, MultivariateNormal
  from ..models import ApproximateGP
  from ..variational._variational_distribution import _VariationalDistribution
  from ..variational.grid_interpolation_variational_strategy import GridInterpolationVariationalStrategy
label_desc: Use image node_id 1 to create a new AdditiveGridInterpolationVariationalStrategy object from inherited base classes: GridInterpolationVariationalStrategy with example: obj = AdditiveGridInterpolationVariationalStrategy(model, grid_size, grid_bounds, num_dim, variational_distribution, mixing_params, sum_output)