class_docstr: Performs a weighted aggregation using a set of predefined `reduction_functions`
  and concatenates the results of each aggregation function along the
  channel dimension. The weights are proportional to the cosine of the
  angle between the target ray and the source ray::
  
      weight = (
          dot(target_ray, source_ray) * 0.5 + 0.5 + self.min_ray_angle_weight
      )**self.weight_by_ray_angle_gamma
  
  The reduction functions singularize the second dimension
  of the sampled features which stacks the source views.
  
  Settings:
      reduction_functions: A list of `ReductionFunction`s that reduce the
          the stack of source-view-specific features to a single feature.
      min_ray_angle_weight: The minimum possible aggregation weight
          before rasising to the power of `self.weight_by_ray_angle_gamma`.
      weight_by_ray_angle_gamma: The exponent of the cosine of the ray angles
          used when calculating the angle-based aggregation weights.
class_docstr_tok: ["Performs","a","weighted","aggregation","using","a","set","of","predefined","`","reduction_functions","`","and","concatenates","the","results","of","each","aggregation","function","along","the","channel","dimension",".","The","weights","are","proportional","to","the","cosine","of","the","angle","between","the","target","ray","and","the","source","ray",":",":","weight","=","(","dot","(","target_ray",",","source_ray",")","*","0.5","+","0.5","+","self.min_ray_angle_weight",")","*","*","self.weight_by_ray_angle_gamma","The","reduction","functions","singularize","the","second","dimension","of","the","sampled","features","which","stacks","the","source","views",".","Settings",":","reduction_functions",":","A","list","of","`","ReductionFunction","`","s","that","reduce","the","the","stack","of","source-view-specific","features","to","a","single","feature",".","min_ray_angle_weight",":","The","minimum","possible","aggregation","weight","before","rasising","to","the","power","of","`","self.weight_by_ray_angle_gamma","`",".","weight_by_ray_angle_gamma",":","The","exponent","of","the","cosine","of","the","ray","angles","used","when","calculating","the","angle-based","aggregation","weights","."]
code: def get_aggregated_feature_dim(
      self, feats_or_feats_dim: Union[Dict[str, torch.Tensor], int]
  ):
      return _get_reduction_aggregator_feature_dim(
          feats_or_feats_dim, self.reduction_functions
      )
  
imports: from abc import ABC, abstractmethod
  from enum import Enum
  from typing import Dict, Optional, Sequence, Tuple, Union
  import torch
  import torch.nn.functional
  from pytorch3d.implicitron.models.view_pooler.view_sampler import cameras_points_cartesian_product
  from pytorch3d.implicitron.tools.config import registry, ReplaceableBase
  from pytorch3d.ops import wmean
  from pytorch3d.renderer.cameras import CamerasBase
label_desc: Use image node_id 1 for calling the AngleWeightedReductionFeatureAggregator obj's underlying member method code with example usage: obj.get_aggregated_feature_dim(feats_or_feats_dim) and returns: _get_reduction_aggregator_feature_dim