class_docstr: The signed graph convolutional network model from the `"Signed Graph
  Convolutional Network" <https://arxiv.org/abs/1808.06354>`_ paper.
  Internally, this module uses the
  :class:`torch_geometric.nn.conv.SignedConv` operator.
  
  Args:
      in_channels (int): Size of each input sample.
      hidden_channels (int): Size of each hidden sample.
      num_layers (int): Number of layers.
      lamb (float, optional): Balances the contributions of the overall
          objective. (default: :obj:`5`)
      bias (bool, optional): If set to :obj:`False`, all layers will not
          learn an additive bias. (default: :obj:`True`)
class_docstr_tok: ["The","signed","graph","convolutional","network","model","from","the","`","``","Signed","Graph","Convolutional","Network","''","<","https",":","\/\/arxiv.org\/abs\/1808.06354",">","`","_","paper",".","Internally",",","this","module","uses","the",":","class",":","`","torch_geometric.nn.conv.SignedConv","`","operator",".","Args",":","in_channels","(","int",")",":","Size","of","each","input","sample",".","hidden_channels","(","int",")",":","Size","of","each","hidden","sample",".","num_layers","(","int",")",":","Number","of","layers",".","lamb","(","float",",","optional",")",":","Balances","the","contributions","of","the","overall","objective",".","(","default",":",":","obj",":","`","5","`",")","bias","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","False","`",",","all","layers","will","not","learn","an","additive","bias",".","(","default",":",":","obj",":","`","True","`",")"]
docstr: Splits the edges :obj:`edge_index` into train and test edges.
  
  Args:
      edge_index (LongTensor): The edge indices.
      test_ratio (float, optional): The ratio of test edges.
          (default: :obj:`0.2`)
docstr_tok: ["Splits","the","edges",":","obj",":","`","edge_index","`","into","train","and","test","edges",".","Args",":","edge_index","(","LongTensor",")",":","The","edge","indices",".","test_ratio","(","float",",","optional",")",":","The","ratio","of","test","edges",".","(","default",":",":","obj",":","`","0.2","`",")"]
code: def split_edges(
      self,
      edge_index: Tensor,
      test_ratio: float = 0.2,
  ) -> Tuple[Tensor, Tensor]:
      r"""Splits the edges :obj:`edge_index` into train and test edges.
  
      Args:
          edge_index (LongTensor): The edge indices.
          test_ratio (float, optional): The ratio of test edges.
              (default: :obj:`0.2`)
      """
      mask = torch.ones(edge_index.size(1), dtype=torch.bool)
      mask[
          torch.randperm(mask.size(0))[: int(test_ratio * mask.size(0))]
      ] = 0
  
      train_edge_index = edge_index[:, mask]
      test_edge_index = edge_index[:, ~mask]
  
      return train_edge_index, test_edge_index
  
imports: from typing import Optional, Tuple
  import scipy.sparse
  import torch
  import torch.nn.functional
  from torch import Tensor
  from torch_geometric.nn import SignedConv
  from torch_geometric.utils import coalesce, negative_sampling, structured_negative_sampling
label_desc: Use image node_id 3 for calling the SignedGCN obj's underlying member method code with example usage: obj.split_edges(edge_index, test_ratio) and returns: train_edge_index,  test_edge_index