code: def _damped_update(
      old_factor: Tensor,
      new_factor: Tensor,
      damping_factor: Tensor,
  ) -> Tensor:
      r"""Computes the damped updated for natural factor.
  
      Args:
          old_factor: A `batch_shape x param_shape`-dim Tensor containing the old
              natural factor.
          new_factor: A `batch_shape x param_shape`-dim Tensor containing the new
              natural factor.
          damping_factor: A `batch_shape`-dim Tensor containing the damping factor.
  
      Returns:
          A `batch_shape x param_shape`-dim Tensor containing the updated natural
          factor.
      """
      bs = damping_factor.shape
      fs = old_factor.shape
  
      df = damping_factor
      for _ in range(len(fs[len(bs) :])):
          df = df.unsqueeze(-1)
  
      return df * new_factor + (1 - df) * old_factor
  
imports: from __future__ import annotations
  from typing import Any, Optional, Tuple
  import torch
  from botorch.acquisition.acquisition import AcquisitionFunction
  from botorch.exceptions import InputDataError
  from botorch.exceptions.errors import UnsupportedError
  from botorch.models.model import Model
  from botorch.models.model_list_gp_regression import ModelListGP
  from botorch.models.utils import check_no_nans
  from botorch.utils.transforms import concatenate_pending_points, t_batch_mode_transform
  from torch import Tensor
  from torch.distributions import Normal
label_desc: Use image node_id 8 for calling a global function with example usage: _damped_update(old_factor, new_factor, damping_factor) and returns: unknown