
"""simple docstring"""






import argparse
import json

import requests
import timm
import torch
from huggingface_hub import hf_hub_download
from PIL import Image

from transformers import AutoImageProcessor, SwinConfig, SwinForImageClassification





def __A    ( a_			:				Any  )->				str:




		'''simple docstring'''






		SCREAMING_SNAKE_CASE							:  Union[str, Any]					=			SwinConfig()
		SCREAMING_SNAKE_CASE							:  Optional[int]					=			swin_name.split('''_'''  )

		SCREAMING_SNAKE_CASE							:  int					=			name_split[1]
		SCREAMING_SNAKE_CASE							:  Optional[Any]					=			int(name_split[4]  )
		SCREAMING_SNAKE_CASE							:  List[Any]					=			int(name_split[3][-1]  )

		if model_size == "tiny":
				SCREAMING_SNAKE_CASE							:  List[str]					=			96
				SCREAMING_SNAKE_CASE							:  List[Any]					=			(2, 2, 6, 2)
				SCREAMING_SNAKE_CASE							:  Dict					=			(3, 6, 12, 24)
		elif model_size == "small":
				SCREAMING_SNAKE_CASE							:  Any					=			96
				SCREAMING_SNAKE_CASE							:  int					=			(2, 2, 18, 2)
				SCREAMING_SNAKE_CASE							:  Optional[int]					=			(3, 6, 12, 24)
		elif model_size == "base":
				SCREAMING_SNAKE_CASE							:  str					=			1_28
				SCREAMING_SNAKE_CASE							:  Tuple					=			(2, 2, 18, 2)
				SCREAMING_SNAKE_CASE							:  Tuple					=			(4, 8, 16, 32)
		else:
				SCREAMING_SNAKE_CASE							:  Optional[Any]					=			1_92
				SCREAMING_SNAKE_CASE							:  Any					=			(2, 2, 18, 2)
				SCREAMING_SNAKE_CASE							:  List[Any]					=			(6, 12, 24, 48)

		if "in22k" in swin_name:
				SCREAMING_SNAKE_CASE							:  int					=			2_18_41
		else:
				SCREAMING_SNAKE_CASE							:  str					=			10_00
				SCREAMING_SNAKE_CASE							:  int					=			"""huggingface/label-files"""
				SCREAMING_SNAKE_CASE							:  Tuple					=			"""imagenet-1k-id2label.json"""
				SCREAMING_SNAKE_CASE							:  Union[str, Any]					=			json.load(open(hf_hub_download(a__		,		a__		,		repo_type='''dataset'''  )		,		'''r'''  )  )
				SCREAMING_SNAKE_CASE							:  List[str]					=			{int(a__  ): v for k, v in idalabel.items()}
				SCREAMING_SNAKE_CASE							:  Any					=			idalabel
				SCREAMING_SNAKE_CASE							:  Union[str, Any]					=			{v: k for k, v in idalabel.items()}

		SCREAMING_SNAKE_CASE							:  Any					=			img_size
		SCREAMING_SNAKE_CASE							:  Any					=			num_classes
		SCREAMING_SNAKE_CASE							:  str					=			embed_dim
		SCREAMING_SNAKE_CASE							:  Optional[Any]					=			depths
		SCREAMING_SNAKE_CASE							:  Tuple					=			num_heads
		SCREAMING_SNAKE_CASE							:  List[Any]					=			window_size

		return config





def __A    ( a_			:				int  )->				Dict:




		'''simple docstring'''






		if "patch_embed.proj" in name:
				SCREAMING_SNAKE_CASE							:  Union[str, Any]					=			name.replace('''patch_embed.proj'''		,		'''embeddings.patch_embeddings.projection'''  )
		if "patch_embed.norm" in name:
				SCREAMING_SNAKE_CASE							:  Any					=			name.replace('''patch_embed.norm'''		,		'''embeddings.norm'''  )
		if "layers" in name:
				SCREAMING_SNAKE_CASE							:  Optional[int]					=			"""encoder.""" + name
		if "attn.proj" in name:
				SCREAMING_SNAKE_CASE							:  str					=			name.replace('''attn.proj'''		,		'''attention.output.dense'''  )
		if "attn" in name:
				SCREAMING_SNAKE_CASE							:  str					=			name.replace('''attn'''		,		'''attention.self'''  )
		if "norm1" in name:
				SCREAMING_SNAKE_CASE							:  List[str]					=			name.replace('''norm1'''		,		'''layernorm_before'''  )
		if "norm2" in name:
				SCREAMING_SNAKE_CASE							:  Tuple					=			name.replace('''norm2'''		,		'''layernorm_after'''  )
		if "mlp.fc1" in name:
				SCREAMING_SNAKE_CASE							:  Optional[int]					=			name.replace('''mlp.fc1'''		,		'''intermediate.dense'''  )
		if "mlp.fc2" in name:
				SCREAMING_SNAKE_CASE							:  Optional[Any]					=			name.replace('''mlp.fc2'''		,		'''output.dense'''  )

		if name == "norm.weight":
				SCREAMING_SNAKE_CASE							:  Tuple					=			"""layernorm.weight"""
		if name == "norm.bias":
				SCREAMING_SNAKE_CASE							:  List[Any]					=			"""layernorm.bias"""

		if "head" in name:
				SCREAMING_SNAKE_CASE							:  Dict					=			name.replace('''head'''		,		'''classifier'''  )
		else:
				SCREAMING_SNAKE_CASE							:  Any					=			"""swin.""" + name

		return name





def __A    ( a_			:				Dict		,		a_			:				int  )->				int:




		'''simple docstring'''






		for key in orig_state_dict.copy().keys():
				SCREAMING_SNAKE_CASE							:  Union[str, Any]					=			orig_state_dict.pop(a__  )

				if "mask" in key:
						continue
				elif "qkv" in key:
						SCREAMING_SNAKE_CASE							:  Optional[int]					=			key.split('''.'''  )
						SCREAMING_SNAKE_CASE							:  Dict					=			int(key_split[1]  )
						SCREAMING_SNAKE_CASE							:  Optional[int]					=			int(key_split[3]  )
						SCREAMING_SNAKE_CASE							:  Dict					=			model.swin.encoder.layers[layer_num].blocks[block_num].attention.self.all_head_size

						if "weight" in key:
								SCREAMING_SNAKE_CASE							:  Union[str, Any]					=			val[:dim, :]
								SCREAMING_SNAKE_CASE							:  Dict					=			val[
								    dim : dim * 2, :
								]
								SCREAMING_SNAKE_CASE							:  int					=			val[-dim:, :]
						else:
								SCREAMING_SNAKE_CASE							:  Optional[int]					=			val[
								    :dim
								]
								SCREAMING_SNAKE_CASE							:  int					=			val[
								    dim : dim * 2
								]
								SCREAMING_SNAKE_CASE							:  str					=			val[
								    -dim:
								]
				else:
						SCREAMING_SNAKE_CASE							:  str					=			val

		return orig_state_dict





def __A    ( a_			:				Optional[Any]		,		a_			:				Union[str, Any]  )->				Optional[int]:




		'''simple docstring'''






		SCREAMING_SNAKE_CASE							:  Union[str, Any]					=			timm.create_model(a__		,		pretrained=a__  )
		timm_model.eval()

		SCREAMING_SNAKE_CASE							:  Dict					=			get_swin_config(a__  )
		SCREAMING_SNAKE_CASE							:  List[str]					=			SwinForImageClassification(a__  )
		model.eval()

		SCREAMING_SNAKE_CASE							:  List[Any]					=			convert_state_dict(timm_model.state_dict()		,		a__  )
		model.load_state_dict(a__  )

		SCREAMING_SNAKE_CASE							:  str					=			"""http://images.cocodataset.org/val2017/000000039769.jpg"""

		SCREAMING_SNAKE_CASE							:  str					=			AutoImageProcessor.from_pretrained('''microsoft/{}'''.format(swin_name.replace('''_'''		,		'''-'''  )  )  )
		SCREAMING_SNAKE_CASE							:  str					=			Image.open(requests.get(a__		,		stream=a__  ).raw  )
		SCREAMING_SNAKE_CASE							:  Optional[int]					=			image_processor(images=a__		,		return_tensors='''pt'''  )

		SCREAMING_SNAKE_CASE							:  int					=			timm_model(inputs['''pixel_values''']  )
		SCREAMING_SNAKE_CASE							:  Tuple					=			model(**a__  ).logits

		assert torch.allclose(a__		,		a__		,		atol=1E-3  )

		print(F"Saving model {swin_name} to {pytorch_dump_folder_path}"  )
		model.save_pretrained(a__  )

		print(F"Saving image processor to {pytorch_dump_folder_path}"  )
		image_processor.save_pretrained(a__  )


if __name__ == "__main__":
					lowerCamelCase__			:							Optional[Any]      =      argparse.ArgumentParser()
					# Required parameters
					parser.add_argument(
					    "--swin_name",
					    default="swin_tiny_patch4_window7_224",
					    type=str,
					    help="Name of the Swin timm model you'd like to convert.",
					)
					parser.add_argument(
					    "--pytorch_dump_folder_path", default=None, type=str, help="Path to the output PyTorch model directory."
					)

					lowerCamelCase__			:							str      =      parser.parse_args()
					convert_swin_checkpoint(args.swin_name, args.pytorch_dump_folder_path)








import unittest

from parameterized import parameterized

from transformers import OpenLlamaConfig, is_torch_available, set_seed
from transformers.testing_utils import require_torch, torch_device

from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
	import torch

	from transformers import OpenLlamaForCausalLM, OpenLlamaForSequenceClassification, OpenLlamaModel



class        A__:
						"""simple docstring"""






						def __init__(    self  ,      _lowercase  ,      _lowercase=13  ,      _lowercase=7  ,      _lowercase=True  ,      _lowercase=True  ,      _lowercase=False  ,      _lowercase=True  ,      _lowercase=99  ,      _lowercase=32  ,      _lowercase=5  ,      _lowercase=4  ,      _lowercase=37  ,      _lowercase="gelu"  ,      _lowercase=0.1  ,      _lowercase=0.1  ,      _lowercase=512  ,      _lowercase=16  ,      _lowercase=2  ,      _lowercase=0.0_2  ,      _lowercase=3  ,      _lowercase=4  ,      _lowercase=None  ,      )     -> Tuple:
									a_						:						Union[str, Any] 							= parent
									a_						:						int 							= batch_size
									a_						:						int 							= seq_length
									a_						:						int 							= is_training
									a_						:						List[Any] 							= use_input_mask
									a_						:						str 							= use_token_type_ids
									a_						:						List[str] 							= use_labels
									a_						:						List[Any] 							= vocab_size
									a_						:						Dict 							= hidden_size
									a_						:						List[Any] 							= num_hidden_layers
									a_						:						str 							= num_attention_heads
									a_						:						str 							= intermediate_size
									a_						:						Optional[int] 							= hidden_act
									a_						:						Optional[int] 							= hidden_dropout_prob
									a_						:						int 							= attention_probs_dropout_prob
									a_						:						List[str] 							= max_position_embeddings
									a_						:						Optional[Any] 							= type_vocab_size
									a_						:						Any 							= type_sequence_label_size
									a_						:						List[Any] 							= initializer_range
									a_						:						List[str] 							= num_labels
									a_						:						Union[str, Any] 							= num_choices
									a_						:						Dict 							= scope





						def 			UpperCamelCase__					(    self    )     -> Any:
									a_						:						Dict 							= ids_tensor([self.batch_size, self.seq_length]  ,      self.vocab_size    )

									a_						:						Union[str, Any] 							= None
									if self.use_input_mask:
												a_						:						Optional[int] 							= random_attention_mask([self.batch_size, self.seq_length]    )

									a_						:						List[Any] 							= None
									if self.use_token_type_ids:
												a_						:						Any 							= ids_tensor([self.batch_size, self.seq_length]  ,      self.type_vocab_size    )

									a_						:						Union[str, Any] 							= None
									a_						:						Dict 							= None
									a_						:						Any 							= None
									if self.use_labels:
												a_						:						Tuple 							= ids_tensor([self.batch_size]  ,      self.type_sequence_label_size    )
												a_						:						Optional[int] 							= ids_tensor([self.batch_size, self.seq_length]  ,      self.num_labels    )
												a_						:						int 							= ids_tensor([self.batch_size]  ,      self.num_choices    )

									a_						:						Optional[int] 							= self.get_config()

									return config, input_ids, token_type_ids, input_mask, sequence_labels, token_labels, choice_labels





						def 			UpperCamelCase__					(    self    )     -> Any:
									return OpenLlamaConfig(
									    vocab_size=self.vocab_size  ,      hidden_size=self.hidden_size  ,      num_hidden_layers=self.num_hidden_layers  ,      num_attention_heads=self.num_attention_heads  ,      intermediate_size=self.intermediate_size  ,      hidden_act=self.hidden_act  ,      hidden_dropout_prob=self.hidden_dropout_prob  ,      attention_probs_dropout_prob=self.attention_probs_dropout_prob  ,      max_position_embeddings=self.max_position_embeddings  ,      type_vocab_size=self.type_vocab_size  ,      is_decoder=_lowercase  ,      initializer_range=self.initializer_range  ,      use_stable_embedding=_lowercase  ,      )





						def 			UpperCamelCase__					(    self  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase    )     -> Dict:
									a_						:						Optional[Any] 							= OpenLlamaModel(config=_lowercase    )
									model.to(_lowercase    )
									model.eval()
									a_						:						List[Any] 							= model(_lowercase  ,      attention_mask=_lowercase    )
									a_						:						Optional[Any] 							= model(_lowercase    )
									self.parent.assertEqual(result.last_hidden_state.shape  ,      (self.batch_size, self.seq_length, self.hidden_size)    )





						def 			UpperCamelCase__					(    self  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      )     -> Union[str, Any]:
									a_						:						int 							= True
									a_						:						Union[str, Any] 							= OpenLlamaModel(_lowercase    )
									model.to(_lowercase    )
									model.eval()
									a_						:						Optional[int] 							= model(
									    _lowercase  ,      attention_mask=_lowercase  ,      encoder_hidden_states=_lowercase  ,      encoder_attention_mask=_lowercase  ,      )
									a_						:						Any 							= model(
									    _lowercase  ,      attention_mask=_lowercase  ,      encoder_hidden_states=_lowercase  ,      )
									a_						:						Optional[int] 							= model(_lowercase  ,      attention_mask=_lowercase    )
									self.parent.assertEqual(result.last_hidden_state.shape  ,      (self.batch_size, self.seq_length, self.hidden_size)    )





						def 			UpperCamelCase__					(    self  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      )     -> Any:
									a_						:						Dict 							= OpenLlamaForCausalLM(config=_lowercase    )
									model.to(_lowercase    )
									model.eval()
									a_						:						int 							= model(_lowercase  ,      attention_mask=_lowercase  ,      labels=_lowercase    )
									self.parent.assertEqual(result.logits.shape  ,      (self.batch_size, self.seq_length, self.vocab_size)    )





						def 			UpperCamelCase__					(    self  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      _lowercase  ,      )     -> List[str]:
									a_						:						Dict 							= True
									a_						:						Optional[int] 							= True
									a_						:						Dict 							= OpenLlamaForCausalLM(config=_lowercase    )
									model.to(_lowercase    )
									model.eval()

									# first forward pass
									a_						:						List[str] 							= model(
									    _lowercase  ,      attention_mask=_lowercase  ,      encoder_hidden_states=_lowercase  ,      encoder_attention_mask=_lowercase  ,      use_cache=_lowercase  ,      )
									a_						:						Optional[Any] 							= outputs.past_key_values

									# create hypothetical multiple next token and extent to next_input_ids
									a_						:						Optional[Any] 							= ids_tensor((self.batch_size, 3)  ,      config.vocab_size    )
									a_						:						Union[str, Any] 							= ids_tensor((self.batch_size, 3)  ,      vocab_size=2    )

									# append to next input_ids and
									a_						:						Any 							= torch.cat([input_ids, next_tokens]  ,      dim=-1    )
									a_						:						Any 							= torch.cat([input_mask, next_mask]  ,      dim=-1    )

									a_						:						Optional[int] 							= model(
									    _lowercase  ,      attention_mask=_lowercase  ,      encoder_hidden_states=_lowercase  ,      encoder_attention_mask=_lowercase  ,      output_hidden_states=_lowercase  ,      )["""hidden_states"""][0]
									a_						:						Dict 							= model(
									    _lowercase  ,      attention_mask=_lowercase  ,      encoder_hidden_states=_lowercase  ,      encoder_attention_mask=_lowercase  ,      past_key_values=_lowercase  ,      output_hidden_states=_lowercase  ,      )["""hidden_states"""][0]

									# select random slice
									a_						:						Optional[int] 							= ids_tensor((1,)  ,      output_from_past.shape[-1]    ).item()
									a_						:						Dict 							= output_from_no_past[:, -3:, random_slice_idx].detach()
									a_						:						Optional[int] 							= output_from_past[:, :, random_slice_idx].detach()

									self.parent.assertTrue(output_from_past_slice.shape[1] == next_tokens.shape[1]    )

									# test that outputs are equal for slice
									self.parent.assertTrue(torch.allclose(_lowercase  ,      _lowercase  ,      atol=1e-3    )    )





						def 			UpperCamelCase__					(    self    )     -> Optional[Any]:
									a_						:						Any 							= self.prepare_config_and_inputs()
									(
									    (
									    a_
									)							,					(
									    a_
									)							,					(
									    a_
									)							,					(
									    a_
									)							,					(
									    a_
									)							,					(
									    a_
									)							,					(
									    a_
									)							,					
									)						:						Union[str, Any] 							= config_and_inputs
									a_						:						Tuple 							= {"""input_ids""": input_ids, """attention_mask""": input_mask}
									return config, inputs_dict







@require_torch
class        A__(a_,  a_,  a_,  unittest.TestCase							):
						"""simple docstring"""






						_A    :				Tuple       					=			(
						    (OpenLlamaModel, OpenLlamaForCausalLM, OpenLlamaForSequenceClassification) if is_torch_available() else ()
						)
						_A    :				int       					=			(OpenLlamaForCausalLM,) if is_torch_available() else ()
						_A    :				Optional[int]       					=			(
						    {
						        '''feature-extraction''': OpenLlamaModel,
						        '''text-classification''': OpenLlamaForSequenceClassification,
						        '''text-generation''': OpenLlamaForCausalLM,
						        '''zero-shot''': OpenLlamaForSequenceClassification,
						    }
						    if is_torch_available()
						    else {}
						)
						_A    :				Tuple       					=			False
						_A    :				Any       					=			False





						def 			UpperCamelCase__					(    self    )     -> List[str]:
									a_						:						Optional[int] 							= OpenLlamaModelTester(self    )
									a_						:						Optional[int] 							= ConfigTester(self  ,      config_class=_lowercase  ,      hidden_size=37    )





						def 			UpperCamelCase__					(    self    )     -> Any:
									self.config_tester.run_common_tests()





						def 			UpperCamelCase__					(    self    )     -> Optional[Any]:
									a_						:						Union[str, Any] 							= self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_model(*_lowercase    )





						def 			UpperCamelCase__					(    self    )     -> Tuple:
									a_						:						Any 							= self.model_tester.prepare_config_and_inputs()
									for type in ["absolute", "relative_key", "relative_key_query"]:
												a_						:						Dict 							= type
												self.model_tester.create_and_check_model(*_lowercase    )





						def 			UpperCamelCase__					(    self    )     -> Union[str, Any]:
									a_							,					a_						:						Tuple 							= self.model_tester.prepare_config_and_inputs_for_common()
									a_						:						Any 							= 3
									a_						:						List[str] 							= input_dict["""input_ids"""]
									a_						:						List[str] 							= input_ids.ne(1    ).to(_lowercase    )
									a_						:						int 							= ids_tensor([self.model_tester.batch_size]  ,      self.model_tester.type_sequence_label_size    )
									a_						:						int 							= OpenLlamaForSequenceClassification(_lowercase    )
									model.to(_lowercase    )
									model.eval()
									a_						:						Tuple 							= model(_lowercase  ,      attention_mask=_lowercase  ,      labels=_lowercase    )
									self.assertEqual(result.logits.shape  ,      (self.model_tester.batch_size, self.model_tester.num_labels)    )





						def 			UpperCamelCase__					(    self    )     -> Optional[Any]:
									a_							,					a_						:						Any 							= self.model_tester.prepare_config_and_inputs_for_common()
									a_						:						Union[str, Any] 							= 3
									a_						:						List[Any] 							= """single_label_classification"""
									a_						:						Dict 							= input_dict["""input_ids"""]
									a_						:						int 							= input_ids.ne(1    ).to(_lowercase    )
									a_						:						List[str] 							= ids_tensor([self.model_tester.batch_size]  ,      self.model_tester.type_sequence_label_size    )
									a_						:						Any 							= OpenLlamaForSequenceClassification(_lowercase    )
									model.to(_lowercase    )
									model.eval()
									a_						:						Any 							= model(_lowercase  ,      attention_mask=_lowercase  ,      labels=_lowercase    )
									self.assertEqual(result.logits.shape  ,      (self.model_tester.batch_size, self.model_tester.num_labels)    )





						def 			UpperCamelCase__					(    self    )     -> Tuple:
									a_							,					a_						:						Union[str, Any] 							= self.model_tester.prepare_config_and_inputs_for_common()
									a_						:						Any 							= 3
									a_						:						List[str] 							= """multi_label_classification"""
									a_						:						Dict 							= input_dict["""input_ids"""]
									a_						:						Any 							= input_ids.ne(1    ).to(_lowercase    )
									a_						:						List[Any] 							= ids_tensor(
									    [self.model_tester.batch_size, config.num_labels]  ,      self.model_tester.type_sequence_label_size    ).to(torch.float    )
									a_						:						Optional[int] 							= OpenLlamaForSequenceClassification(_lowercase    )
									model.to(_lowercase    )
									model.eval()
									a_						:						int 							= model(_lowercase  ,      attention_mask=_lowercase  ,      labels=_lowercase    )
									self.assertEqual(result.logits.shape  ,      (self.model_tester.batch_size, self.model_tester.num_labels)    )





						@unittest.skip("""Open-Llama buffers include complex numbers, which breaks this test"""    )
						def 			UpperCamelCase__					(    self    )     -> Tuple:
									pass





						@parameterized.expand([("""linear""",), ("""dynamic""",)]    )
						def 			UpperCamelCase__					(    self  ,      _lowercase    )     -> str:
									a_							,					a_						:						Optional[int] 							= self.model_tester.prepare_config_and_inputs_for_common()
									a_						:						List[Any] 							= ids_tensor([1, 10]  ,      config.vocab_size    )
									a_						:						str 							= ids_tensor([1, int(config.max_position_embeddings * 1.5    )]  ,      config.vocab_size    )

									set_seed(42    )  # Fixed seed at init time so the two models get the same random weights
									a_						:						Union[str, Any] 							= OpenLlamaModel(_lowercase    )
									original_model.to(_lowercase    )
									original_model.eval()
									a_						:						Union[str, Any] 							= original_model(_lowercase    ).last_hidden_state
									a_						:						str 							= original_model(_lowercase    ).last_hidden_state

									set_seed(42    )  # Fixed seed at init time so the two models get the same random weights
									a_						:						int 							= {"""type""": scaling_type, """factor""": 1_0.0}
									a_						:						Union[str, Any] 							= OpenLlamaModel(_lowercase    )
									scaled_model.to(_lowercase    )
									scaled_model.eval()
									a_						:						Optional[int] 							= scaled_model(_lowercase    ).last_hidden_state
									a_						:						Tuple 							= scaled_model(_lowercase    ).last_hidden_state

									# Dynamic scaling does not change the RoPE embeddings until it receives an input longer than the original
									# maximum sequence length, so the outputs for the short input should match.
									if scaling_type == "dynamic":
												self.assertTrue(torch.allclose(_lowercase  ,      _lowercase  ,      atol=1e-5    )    )
									else:
												self.assertFalse(torch.allclose(_lowercase  ,      _lowercase  ,      atol=1e-5    )    )

									# The output should be different for long inputs
									self.assertFalse(torch.allclose(_lowercase  ,      _lowercase  ,      atol=1e-5    )    )


