class_docstr: ISAB block from `Set Transformer: A Framework for Attention-based
  Permutation-Invariant Neural Networks <https://arxiv.org/abs/1810.00825>`__
  
  Parameters
  ----------
  m : int
      The number of induced vectors.
  d_model : int
      The feature size (input and output) in Multi-Head Attention layer.
  num_heads : int
      The number of heads.
  d_head : int
      The hidden size per head.
  d_ff : int
      The inner hidden size in the Feed-Forward Neural Network.
  dropouth : float
      The dropout rate of each sublayer.
  dropouta : float
      The dropout rate of attention heads.
  
  Notes
  -----
  This module was used in SetTransformer layer.
class_docstr_tok: ["ISAB","block","from","`","Set","Transformer",":","A","Framework","for","Attention-based","Permutation-Invariant","Neural","Networks","<","https",":","\/\/arxiv.org\/abs\/1810.00825",">","`","__","Parameters","--","--","--","--","--","m",":","int","The","number","of","induced","vectors",".","d_model",":","int","The","feature","size","(","input","and","output",")","in","Multi-Head","Attention","layer",".","num_heads",":","int","The","number","of","heads",".","d_head",":","int","The","hidden","size","per","head",".","d_ff",":","int","The","inner","hidden","size","in","the","Feed-Forward","Neural","Network",".","dropouth",":","float","The","dropout","rate","of","each","sublayer",".","dropouta",":","float","The","dropout","rate","of","attention","heads",".","Notes","--","--","-","This","module","was","used","in","SetTransformer","layer","."]
code: def __init__(
      self,
      m,
      d_model,
      num_heads,
      d_head,
      d_ff,
      dropouth=0.0,
      dropouta=0.0,
  ):
      super(InducedSetAttentionBlock, self).__init__()
      self.m = m
      if m == 1:
          dgl_warning(
              "if m is set to 1, the parameters corresponding to query and key "
              "projections would not get updated during training."
          )
      self.d_model = d_model
      self.inducing_points = nn.Parameter(th.FloatTensor(m, d_model))
      self.mha = nn.ModuleList(
          [
              MultiHeadAttention(
                  d_model,
                  num_heads,
                  d_head,
                  d_ff,
                  dropouth=dropouth,
                  dropouta=dropouta,
              )
              for _ in range(2)
          ]
      )
      self.reset_parameters()
  
imports: import numpy
  import torch
  import torch.nn
  from ...backend import pytorch
  from ...base import dgl_warning
  from ...readout import broadcast_nodes, max_nodes, mean_nodes, softmax_nodes, sum_nodes, topk_nodes
label_desc: Use image node_id 1 to create a new InducedSetAttentionBlock object from inherited base classes: nn with example: obj = InducedSetAttentionBlock(m, d_model, num_heads, d_head, d_ff, dropouth, dropouta)