




import argparse

import torch

from transformers import FunnelBaseModel, FunnelConfig, FunnelModel, load_tf_weights_in_funnel
from transformers.utils import logging


logging.set_verbosity_info()




def 			__magic_name__				( A		:					List[Any],  A		:					Tuple,  A		:					int,  A		:					List[str]   ):






			'''simple docstring'''







			a    =			FunnelConfig.from_json_file(A   )
			print(F"""Building PyTorch model from configuration: {config}"""   )
			a    =			FunnelBaseModel(A   ) if base_model else FunnelModel(A   )

			# Load weights from tf checkpoint
			load_tf_weights_in_funnel(A,  A,  A   )

			# Save pytorch-model
			print(F"""Save PyTorch model to {pytorch_dump_path}"""   )
			torch.save(model.state_dict(),  A   )


if __name__ == "__main__":
		__lowerCAmelCase		:				Union[str, Any]       			=		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(
		    '--config_file',
		    default=None,
		    type=str,
		    required=True,
		    help='The config json file corresponding to the pre-trained model. \nThis specifies the model architecture.',
		)
		parser.add_argument(
		    '--pytorch_dump_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
		)
		parser.add_argument(
		    '--base_model', action='store_true', help='Whether you want just the base model (no decoder) or not.'
		)
		__lowerCAmelCase		:				Union[str, Any]       			=		parser.parse_args()
		convert_tf_checkpoint_to_pytorch(
		    args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.base_model
		)








from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


lowercase__		:int   =    logging.get_logger(__name__)

lowercase__		:Any   =    {
    "sail/poolformer_s12": "https://huggingface.co/sail/poolformer_s12/resolve/main/config.json",
    # See all PoolFormer models at https://huggingface.co/models?filter=poolformer
}







class 				lowercase		(					SCREAMING_SNAKE_CASE__		):
							lowercase_       :       Optional[Any]       					='''poolformer'''




							def __init__(				self   ,A__=3   ,A__=1_6   ,A__=1_6   ,A__=3   ,A__=4.0   ,A__=[2, 2, 6, 2]   ,A__=[6_4, 1_2_8, 3_2_0, 5_1_2]   ,A__=[7, 3, 3, 3]   ,A__=[4, 2, 2, 2]   ,A__=[2, 1, 1, 1]   ,A__=4   ,A__=0.0   ,A__="gelu"   ,A__=True   ,A__=1E-5   ,A__=0.02   ,**A__   ,):
												lowercase							=						num_channels
												lowercase							=						patch_size
												lowercase							=						stride
												lowercase							=						padding
												lowercase							=						pool_size
												lowercase							=						hidden_sizes
												lowercase							=						mlp_ratio
												lowercase							=						depths
												lowercase							=						patch_sizes
												lowercase							=						strides
												lowercase							=						num_encoder_blocks
												lowercase							=						drop_path_rate
												lowercase							=						hidden_act
												lowercase							=						use_layer_scale
												lowercase							=						layer_scale_init_value
												lowercase							=						initializer_range
												super().__init__(**A__)







class 				lowercase		(					SCREAMING_SNAKE_CASE__		):
							lowercase_       :       List[Any]       					=version.parse('''1.11'''		)




							@property
							def  A__      (				self):
												return OrderedDict(
												    [
												        ('''pixel_values''', {0: '''batch''', 1: '''num_channels''', 2: '''height''', 3: '''width'''}),
												    ])





							@property
							def  A__      (				self):
												return 2E-3




