class_docstr: This function implements dropout 2d. It randomly put zeros on
  entire channels.
  
  
  Arguments
  ---------
  dropout_rate : float
      It is the dropout factor (between 0 and 1).
  inplace : bool
      If True, it uses inplace operations.
  
  Example
  -------
  >>> drop = Dropout2d(drop_rate=0.5)
  >>> inputs = torch.rand(10, 50, 40)
  >>> output=drop(inputs)
  >>> output.shape
  torch.Size([10, 50, 40])
docstr: Applies dropout 2d to the input tensor.
  
  Arguments
  ---------
  x : torch.Tensor (batch, time, channel1, channel2)
      input to normalize. 4d tensors are expected.
docstr_tok: ["Applies","dropout","2d","to","the","input","tensor",".","Arguments","--","--","--","--","-","x",":","torch.Tensor","(","batch",",","time",",","channel1",",","channel2",")","input","to","normalize",".","4d","tensors","are","expected","."]
code: def forward(self, x):
      """Applies dropout 2d to the input tensor.
  
      Arguments
      ---------
      x : torch.Tensor (batch, time, channel1, channel2)
          input to normalize. 4d tensors are expected.
      """
  
      # time must be the last
      x = x.transpose(1, 2).transpose(2, -1)
      x_drop = self.drop(x)
      x_drop = x_drop.transpose(-1, 1).transpose(2, -1)
  
      return x_drop
  
imports: import torch
  import logging
  import torch.nn
label_desc: Use image node_id 2 for calling the Dropout2d obj's underlying member method code with example usage: obj.forward(x) and returns: x_drop