code: def from_importance_weights(
      log_rhos,
      discounts,
      rewards,
      values,
      bootstrap_value,
      clip_rho_threshold=1.0,
      clip_pg_rho_threshold=1.0,
  ):
      r"""V-trace from log importance weights.
  
      Calculates V-trace actor critic targets as described in
  
      "IMPALA: Scalable Distributed Deep-RL with
      Importance Weighted Actor-Learner Architectures"
      by Espeholt, Soyer, Munos et al.
  
      In the notation used throughout documentation and comments, T refers to the
      time dimension ranging from 0 to T-1. B refers to the batch size and
      NUM_ACTIONS refers to the number of actions. This code also supports the
      case where all tensors have the same number of additional dimensions, e.g.,
      `rewards` is [T, B, C], `values` is [T, B, C], `bootstrap_value` is [B, C].
  
      Args:
        log_rhos: A float32 tensor of shape [T, B, NUM_ACTIONS] representing the log
          importance sampling weights, i.e.
          log(target_policy(a) / behaviour_policy(a)). V-trace performs operations
          on rhos in log-space for numerical stability.
        discounts: A float32 tensor of shape [T, B] with discounts encountered when
          following the behaviour policy.
        rewards: A float32 tensor of shape [T, B] containing rewards generated by
          following the behaviour policy.
        values: A float32 tensor of shape [T, B] with the value function estimates
          wrt. the target policy.
        bootstrap_value: A float32 of shape [B] with the value function estimate at
          time T.
        clip_rho_threshold: A scalar float32 tensor with the clipping threshold for
          importance weights (rho) when calculating the baseline targets (vs).
          rho^bar in the paper. If None, no clipping is applied.
        clip_pg_rho_threshold: A scalar float32 tensor with the clipping threshold
          on rho_s in \rho_s \delta log \pi(a|x) (r + \gamma v_{s+1} - V(x_s)). If
          None, no clipping is applied.
        name: The name scope that all V-trace operations will be created in.
  
      Returns:
        A VTraceReturns namedtuple (vs, pg_advantages) where:
          vs: A float32 tensor of shape [T, B]. Can be used as target to
            train a baseline (V(x_t) - vs_t)^2.
          pg_advantages: A float32 tensor of shape [T, B]. Can be used as the
            advantage in the calculation of policy gradients.
      """
      rhos = torch.exp(log_rhos)
      if clip_rho_threshold is not None:
          clipped_rhos = torch.clamp(rhos, max=clip_rho_threshold)
      else:
          clipped_rhos = rhos
  
      cs = torch.clamp(rhos, max=1.0)
      # Append bootstrapped value to get [v1, ..., v_t+1]
      values_t_plus_1 = torch.cat(
          [values[1:], torch.unsqueeze(bootstrap_value, 0)], dim=0
      )
      deltas = clipped_rhos * (
          rewards + discounts * values_t_plus_1 - values
      )
  
      acc = torch.zeros_like(bootstrap_value)
      result = []
      for t in range(discounts.shape[0] - 1, -1, -1):
          acc = deltas[t] + discounts[t] * cs[t] * acc
          result.append(acc)
      result.reverse()
      vs_minus_v_xs = torch.stack(result)
  
      # Add V(x_s) to get v_s.
      vs = torch.add(vs_minus_v_xs, values)
  
      # Advantage for policy gradient.
      broadcasted_bootstrap_values = (
          torch.ones_like(vs[0]) * bootstrap_value
      )
      vs_t_plus_1 = torch.cat(
          [vs[1:], broadcasted_bootstrap_values.unsqueeze(0)], dim=0
      )
      if clip_pg_rho_threshold is not None:
          clipped_pg_rhos = torch.clamp(rhos, max=clip_pg_rho_threshold)
      else:
          clipped_pg_rhos = rhos
      pg_advantages = clipped_pg_rhos * (
          rewards + discounts * vs_t_plus_1 - values
      )
  
      # Make sure no gradients backpropagated through the returned values.
      return VTraceReturns(vs=vs, pg_advantages=pg_advantages)
  
imports: import collections
  import torch
  import torch.nn.functional
label_desc: Use image node_id 3 for calling a global function with example usage: from_importance_weights(log_rhos, discounts, rewards, values, bootstrap_value, clip_rho_threshold, clip_pg_rho_threshold) and returns: VTraceReturns