class_docstr: The powermean aggregation operator based on a power term, as
  described in the `"DeeperGCN: All You Need to Train Deeper GCNs"
  <https://arxiv.org/abs/2006.07739>`_ paper.
  
  .. math::
      \mathrm{powermean}(\mathcal{X}|p) = \left(\frac{1}{|\mathcal{X}|}
      \sum_{\mathbf{x}_i\in\mathcal{X}}\mathbf{x}_i^{p}\right)^{1/p},
  
  where :math:`p` controls the power of the powermean when aggregating over
  a set of features :math:`\mathcal{X}`.
  
  Args:
      p (float, optional): Initial power for powermean aggregation.
          (default: :obj:`1.0`)
      learn (bool, optional): If set to :obj:`True`, will learn the value
          :obj:`p` for powermean aggregation dynamically.
          (default: :obj:`False`)
      channels (int, optional): Number of channels to learn from :math:`p`.
          If set to a value greater than :obj:`1`, :math:`p` will be learned
          per input feature channel. This requires compatible shapes for the
          input to the forward calculation. (default: :obj:`1`)
code: def reset_parameters(self):
      if isinstance(self.p, Tensor):
          self.p.data.fill_(self._init_p)
  
imports: import math
  from typing import Optional
  import torch
  from torch import Tensor
  from torch.nn import Parameter
  from torch_geometric.nn.aggr import Aggregation
  from torch_geometric.utils import softmax
label_desc: Use image node_id 2 for calling the PowerMeanAggregation obj's underlying member method code with example usage: obj.reset_parameters() without return types