





from torch import nn



def      _lowerCAmelCase		(	_lowerCAmelCase  ):
   '''simple docstring'''


   if act_fn in ["swish", "silu"]:
      return nn.SiLU()
   elif act_fn == "mish":
      return nn.Mish()
   elif act_fn == "gelu":
      return nn.GELU()
   else:
      raise ValueError(f"""Unsupported activation function: {act_fn}"""  )














"""simple docstring"""


import argparse

import torch

from transformers import MobileBertConfig, MobileBertForPreTraining, load_tf_weights_in_mobilebert
from transformers.utils import logging


logging.set_verbosity_info()


def        UpperCAmelCase      (					a__     ,      a__     ,      a__ ):





						'''simple docstring'''






						lowerCAmelCase   :Tuple						=			MobileBertConfig.from_json_file(a__ )
						print(F"""Building PyTorch model from configuration: {config}""" )
						lowerCAmelCase   :Tuple						=			MobileBertForPreTraining(a__ )
						# Load weights from tf checkpoint
						lowerCAmelCase   :Any						=			load_tf_weights_in_mobilebert(a__     ,      a__     ,      a__ )
						# Save pytorch-model
						print(F"""Save PyTorch model to {pytorch_dump_path}""" )
						torch.save(model.state_dict()     ,      a__ )


if __name__ == "__main__":
		__SCREAMING_SNAKE_CASE   =   argparse.ArgumentParser()
		# Required parameters
		parser.add_argument(
		    '--tf_checkpoint_path', default=None, type=str, required=True, help='Path to the TensorFlow checkpoint path.'
		)
		parser.add_argument(
		    '--mobilebert_config_file',
		    default=None,
		    type=str,
		    required=True,
		    help=(
		        'The config json file corresponding to the pre-trained MobileBERT model. \n'
		        'This specifies the model architecture.'
		    ),
		)
		parser.add_argument(
		    '--pytorch_dump_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
		)
		__SCREAMING_SNAKE_CASE   =   parser.parse_args()
		convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.mobilebert_config_file, args.pytorch_dump_path)