





import argparse
import os

import torch

from transformers import (
    XLNetConfig,
    XLNetForQuestionAnswering,
    XLNetForSequenceClassification,
    XLNetLMHeadModel,
    load_tf_weights_in_xlnet,
)
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


_lowerCamelCase 					=      {
    'cola': 2,
    'mnli': 3,
    'mrpc': 2,
    'sst-2': 2,
    'sts-b': 1,
    'qqp': 2,
    'qnli': 2,
    'rte': 2,
    'wnli': 2,
}


logging.set_verbosity_info()






def 					SCREAMING_SNAKE_CASE__				(							UpperCamelCase__:				int       , UpperCamelCase__:				Tuple       , UpperCamelCase__:				int       , UpperCamelCase__:				str=None     ):
		# Initialise PyTorch model
		SCREAMING_SNAKE_CASE__								=   XLNetConfig.from_json_file(__snake_case     )

		SCREAMING_SNAKE_CASE__								=   finetuning_task.lower() if finetuning_task is not None else """"""
		if finetuning_task in GLUE_TASKS_NUM_LABELS:
				print(f'''Building PyTorch XLNetForSequenceClassification model from configuration: {config}'''     )
				SCREAMING_SNAKE_CASE__								=   finetuning_task
				SCREAMING_SNAKE_CASE__								=   GLUE_TASKS_NUM_LABELS[finetuning_task]
				SCREAMING_SNAKE_CASE__								=   XLNetForSequenceClassification(__snake_case     )
		elif "squad" in finetuning_task:
				SCREAMING_SNAKE_CASE__								=   finetuning_task
				SCREAMING_SNAKE_CASE__								=   XLNetForQuestionAnswering(__snake_case     )
		else:
				SCREAMING_SNAKE_CASE__								=   XLNetLMHeadModel(__snake_case     )

		# Load weights from tf checkpoint
		load_tf_weights_in_xlnet(__snake_case       , __snake_case       , __snake_case     )

		# Save pytorch-model
		SCREAMING_SNAKE_CASE__								=   os.path.join(__snake_case       , __snake_case     )
		SCREAMING_SNAKE_CASE__								=   os.path.join(__snake_case       , __snake_case     )
		print(f'''Save PyTorch model to {os.path.abspath(__snake_case     )}'''     )
		torch.save(model.state_dict()       , __snake_case     )
		print(f'''Save configuration file to {os.path.abspath(__snake_case     )}'''     )
		with open(__snake_case       , """w"""       , encoding="""utf-8"""     ) as f:
				f.write(config.to_json_string()     )


if __name__ == "__main__":
	_lowerCamelCase 					=      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(
	    '--xlnet_config_file',
	    default=None,
	    type=str,
	    required=True,
	    help=(
	        'The config json file corresponding to the pre-trained XLNet model. \n'
	        'This specifies the model architecture.'
	    ),
	)
	parser.add_argument(
	    '--pytorch_dump_folder_path',
	    default=None,
	    type=str,
	    required=True,
	    help='Path to the folder to store the PyTorch model or dataset/vocab.',
	)
	parser.add_argument(
	    '--finetuning_task',
	    default=None,
	    type=str,
	    help='Name of a task on which the XLNet TensorFlow model was fine-tuned',
	)
	_lowerCamelCase 					=      parser.parse_args()
	print(args)

	convert_xlnet_checkpoint_to_pytorch(
	    args.tf_checkpoint_path, args.xlnet_config_file, args.pytorch_dump_folder_path, args.finetuning_task
	)
from __future__ import annotations

import math

import numpy as np
from numpy.linalg import norm
def 					_snake_case	(  __snake_case  ,     __snake_case						):
					return math.sqrt(sum(pow(a - b  ,     2						) for a, b in zip(__snake_case  ,     __snake_case						)						)						)
def 					_snake_case	(  __snake_case  ,     __snake_case						):

					if dataset.ndim != value_array.ndim:
										_UpperCamelCase			     =     (
										    '''Wrong input data\'s dimensions... '''
										    f"""dataset : {dataset.ndim}, value_array : {value_array.ndim}"""
										)
										raise ValueError(__snake_case						)

					try:
										if dataset.shape[1] != value_array.shape[1]:
															_UpperCamelCase			     =     (
															    '''Wrong input data\'s shape... '''
															    f"""dataset : {dataset.shape[1]}, value_array : {value_array.shape[1]}"""
															)
															raise ValueError(__snake_case						)
					except IndexError:
										if dataset.ndim != value_array.ndim:
															raise TypeError('''Wrong shape'''						)

					if dataset.dtype != value_array.dtype:
										_UpperCamelCase			     =     (
										    '''Input data have different datatype... '''
										    f"""dataset : {dataset.dtype}, value_array : {value_array.dtype}"""
										)
										raise TypeError(__snake_case						)

					_UpperCamelCase			     =     []

					for value in value_array:
										_UpperCamelCase			     =     euclidean(__snake_case  ,     dataset[0]						)
										_UpperCamelCase			     =     dataset[0].tolist()

										for dataset_value in dataset[1:]:
															_UpperCamelCase			     =     euclidean(__snake_case  ,     __snake_case						)

															if dist > temp_dist:
																				_UpperCamelCase			     =     temp_dist
																				_UpperCamelCase			     =     dataset_value.tolist()

										answer.append([vector, dist]						)

					return answer
def 					_snake_case	(  __snake_case  ,     __snake_case						):
					return np.dot(__snake_case  ,     __snake_case						) / (norm(__snake_case						) * norm(__snake_case						))


if __name__ == "__main__":
					import doctest

					doctest.testmod()
