class_docstr: Feature-level dropout: takes an input of size len x num_features and drops
  each feature with probabibility p. A feature is dropped across the full
  portion of the input that corresponds to a single batch element.
class_docstr_tok: ["Feature-level","dropout",":","takes","an","input","of","size","len","x","num_features","and","drops","each","feature","with","probabibility","p.","A","feature","is","dropped","across","the","full","portion","of","the","input","that","corresponds","to","a","single","batch","element","."]
code: def forward(self, x):
      if isinstance(x, tuple):
          x_c, x_p = x
          x_c = FeatureDropoutFunction.apply(
              x_c, self.p, self.training, self.inplace
          )
          x_p = FeatureDropoutFunction.apply(
              x_p, self.p, self.training, self.inplace
          )
          return x_c, x_p
      else:
          return FeatureDropoutFunction.apply(
              x, self.p, self.training, self.inplace
          )
  
imports: import copy
  import math
  import torch
  import torch.nn
  import torch.nn.functional
  from stanza.models.constituency.positional_encoding import ConcatSinusoidalEncoding
label_desc: Use image node_id 1 for calling the FeatureDropout obj's underlying member method code with example usage: obj.forward(x) and returns: x_c,  x_p, FeatureDropoutFunction