





'''simple docstring'''






import argparse

import torch

from transformers import OpenAIGPTConfig, OpenAIGPTModel, load_tf_weights_in_openai_gpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()





def       lowercase_      (		lowercase__				,  lowercase__				,  lowercase__						)   ->Union[str, Any]:
						# Construct model
						if openai_config_file == "":
												_snake_case:   Union[str, Any]  					=		OpenAIGPTConfig()
						else:
												_snake_case:   Optional[int]  					=		OpenAIGPTConfig.from_json_file(lowercase__						)
						_snake_case:   List[Any]  					=		OpenAIGPTModel(lowercase__						)

						# Load weights from numpy
						load_tf_weights_in_openai_gpt(lowercase__				,  lowercase__				,  lowercase__						)

						# Save pytorch-model
						_snake_case:   Tuple  					=		pytorch_dump_folder_path + '/' + WEIGHTS_NAME
						_snake_case:   int  					=		pytorch_dump_folder_path + '/' + CONFIG_NAME
						print(F'''Save PyTorch model to {pytorch_weights_dump_path}'''						)
						torch.save(model.state_dict()				,  lowercase__						)
						print(F'''Save configuration file to {pytorch_config_dump_path}'''						)
						with open(lowercase__				,  'w'				,  encoding='utf-8'						) as f:
												f.write(config.to_json_string()						)


if __name__ == "__main__":
		A   : str             =			argparse.ArgumentParser()
		# Required parameters
		parser.add_argument(
		    '--openai_checkpoint_folder_path',
		    default=None,
		    type=str,
		    required=True,
		    help='Path to the TensorFlow checkpoint path.',
		)
		parser.add_argument(
		    '--pytorch_dump_folder_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
		)
		parser.add_argument(
		    '--openai_config_file',
		    default='',
		    type=str,
		    help=(
		        'An optional config json file corresponding to the pre-trained OpenAI model. \n'
		        'This specifies the model architecture.'
		    ),
		)
		A   : Union[str, Any]             =			parser.parse_args()
		convert_openai_checkpoint_to_pytorch(
		    args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
		)












'''simple docstring'''






def       lowercase_      (		lowercase__ = 50						)   ->int:
						_snake_case:   Union[str, Any]  					=		[[0] * 3 for _ in range(length + 1						)]

						for row_length in range(length + 1						):
												for tile_length in range(2				,  5						):
																		for tile_start in range(row_length - tile_length + 1						):
																								different_colour_ways_number[row_length][tile_length - 2] += (
																								    different_colour_ways_number[row_length - tile_start - tile_length][
																								        tile_length - 2
																								    ]
																								    + 1
																								)

						return sum(different_colour_ways_number[length]						)


if __name__ == "__main__":
		print(F'{solution() = }')





