class_docstr: An aggregation operator that takes the feature-wise standard deviation
  across a set of elements.
  
  .. math::
      \mathrm{std}(\mathcal{X}) = \sqrt{\mathrm{var}(\mathcal{X})}.
  
  Args:
      semi_grad (bool, optional): If set to :obj:`True`, will turn off
          gradient calculation during :math:`E[X^2]` computation. Therefore,
          only semi-gradients are used during backpropagation. Useful for
          saving memory and accelerating backward computation.
          (default: :obj:`False`)
code: def forward(
      self,
      x: Tensor,
      index: Optional[Tensor] = None,
      ptr: Optional[Tensor] = None,
      dim_size: Optional[int] = None,
      dim: int = -2,
  ) -> Tensor:
      var = self.var_aggr(x, index, ptr, dim_size, dim)
      # Allow "undefined" gradient at `sqrt(0.0)`:
      out = var.clamp(min=1e-5).sqrt()
      out = out.masked_fill(out <= math.sqrt(1e-5), 0.0)
      return out
  
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 StdAggregation obj's underlying member method code with example usage: obj.forward(x, index, ptr, dim_size, dim) and returns: out