class_docstr: The GravNet operator from the `"Learning Representations of Irregular
  Particle-detector Geometry with Distance-weighted Graph
  Networks" <https://arxiv.org/abs/1902.07987>`_ paper, where the graph is
  dynamically constructed using nearest neighbors.
  The neighbors are constructed in a learnable low-dimensional projection of
  the feature space.
  A second projection of the input feature space is then propagated from the
  neighbors to each vertex using distance weights that are derived by
  applying a Gaussian function to the distances.
  
  Args:
      in_channels (int): Size of each input sample, or :obj:`-1` to derive
          the size from the first input(s) to the forward method.
      out_channels (int): The number of output channels.
      space_dimensions (int): The dimensionality of the space used to
         construct the neighbors; referred to as :math:`S` in the paper.
      propagate_dimensions (int): The number of features to be propagated
         between the vertices; referred to as :math:`F_{\textrm{LR}}` in the
         paper.
      k (int): The number of nearest neighbors.
      **kwargs (optional): Additional arguments of
          :class:`torch_geometric.nn.conv.MessagePassing`.
  
  Shapes:
      - **input:**
        node features :math:`(|\mathcal{V}|, F_{in})` or
        :math:`((|\mathcal{V_s}|, F_{in}), (|\mathcal{V_t}|, F_{in}))`
        if bipartite,
        batch vector :math:`(|\mathcal{V}|)` or
        :math:`((|\mathcal{V}_s|), (|\mathcal{V}_t|))` if bipartite
        *(optional)*
      - **output:** node features :math:`(|\mathcal{V}|, F_{out})` or
        :math:`(|\mathcal{V}_t|, F_{out})` if bipartite
class_docstr_tok: ["The","GravNet","operator","from","the","`","``","Learning","Representations","of","Irregular","Particle-detector","Geometry","with","Distance-weighted","Graph","Networks","''","<","https",":","\/\/arxiv.org\/abs\/1902.07987",">","`","_","paper",",","where","the","graph","is","dynamically","constructed","using","nearest","neighbors",".","The","neighbors","are","constructed","in","a","learnable","low-dimensional","projection","of","the","feature","space",".","A","second","projection","of","the","input","feature","space","is","then","propagated","from","the","neighbors","to","each","vertex","using","distance","weights","that","are","derived","by","applying","a","Gaussian","function","to","the","distances",".","Args",":","in_channels","(","int",")",":","Size","of","each","input","sample",",","or",":","obj",":","`","-1","`","to","derive","the","size","from","the","first","input","(","s",")","to","the","forward","method",".","out_channels","(","int",")",":","The","number","of","output","channels",".","space_dimensions","(","int",")",":","The","dimensionality","of","the","space","used","to","construct","the","neighbors",";","referred","to","as",":","math",":","`","S","`","in","the","paper",".","propagate_dimensions","(","int",")",":","The","number","of","features","to","be","propagated","between","the","vertices",";","referred","to","as",":","math",":","`","F_","{","\\textrm","{","LR","}","}","`","in","the","paper",".","k","(","int",")",":","The","number","of","nearest","neighbors",".","*","*","kwargs","(","optional",")",":","Additional","arguments","of",":","class",":","`","torch_geometric.nn.conv.MessagePassing","`",".","Shapes",":","-","*","*","input",":","*","*","node","features",":","math",":","`","(","|\\mathcal","{","V","}","|",",","F_","{","in","}",")","`","or",":","math",":","`","(","(","|\\mathcal","{","V_s","}","|",",","F_","{","in","}",")",",","(","|\\mathcal","{","V_t","}","|",",","F_","{","in","}",")",")","`","if","bipartite",",","batch","vector",":","math",":","`","(","|\\mathcal","{","V","}","|",")","`","or",":","math",":","`","(","(","|\\mathcal","{","V","}","_s|",")",",","(","|\\mathcal","{","V","}","_t|",")",")","`","if","bipartite","*","(","optional",")","*","-","*","*","output",":","*","*","node","features",":","math",":","`","(","|\\mathcal","{","V","}","|",",","F_","{","out","}",")","`","or",":","math",":","`","(","|\\mathcal","{","V","}","_t|",",","F_","{","out","}",")","`","if","bipartite"]
code: def message(self, x_j: Tensor, edge_weight: Tensor) -> Tensor:
      return x_j * edge_weight.unsqueeze(1)
  
file_path: pytorch_geometric/torch_geometric/nn/conv/gravnet_conv.py
imports: import warnings
  from typing import Optional, Union
  import torch
  from torch import Tensor
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.nn.dense.linear import Linear
  from torch_geometric.typing import OptPairTensor
  from torch_geometric.typing import OptTensor, PairOptTensor, PairTensor
label_desc: Use image node_id 4 for calling the GravNetConv obj's underlying member method code with example usage: obj.message(x_j, edge_weight) and returns: unknown