class_docstr: Pruner that will remove the bottom half of the rows.
  This is primarily meant for testing purposes
class_docstr_tok: ["Pruner","that","will","remove","the","bottom","half","of","the","rows",".","This","is","primarily","meant","for","testing","purposes"]
code: def update_mask(self, module, tensor_name, **kwargs):
      for p in getattr(module.parametrizations, tensor_name):
          if isinstance(p, FakeStructuredSparsity):
              mask = p.mask
              masks = torch.split(mask, len(mask) // 4)
              for small in masks:
                  num = len(small)
                  small[num // 2 :] = False
              new_mask = torch.cat(masks)
              mask.data = new_mask.data
  
imports: import copy
  import logging
  import random
  import torch
  from torch import nn
  from torch.ao.pruning._experimental.pruner import SaliencyPruner, LSTMSaliencyPruner, BaseStructuredSparsifier, FakeStructuredSparsity, FPGMPruner
  from torch.nn.utils import parametrize
  from torch.testing._internal.common_utils import TestCase, skipIfTorchDynamo
  from torch.testing._internal.common_pruning import SimpleLinear, LinearBias, LinearActivation, LinearActivationFunctional, SimpleConv2d, Conv2dBias, Conv2dActivation, Conv2dPadBias, Conv2dPool, Conv2dPoolFlatten, Conv2dPoolFlattenFunctional, LSTMLinearModel, LSTMLayerNormLinearModel, rows_are_subset
label_desc: Use image node_id 1 for calling the BottomHalfLSTMPruner obj's underlying member method code with example usage: obj.update_mask(module, tensor_name) without return types