


'''simple docstring'''

import inspect
import unittest

from transformers import RegNetConfig
from transformers.file_utils import cached_property, is_torch_available, is_vision_available
from transformers.testing_utils import require_torch, require_vision, slow, torch_device

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
	import torch
	from torch import nn

	from transformers import RegNetForImageClassification, RegNetModel
	from transformers.models.regnet.modeling_regnet import REGNET_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
	from PIL import Image

	from transformers import AutoImageProcessor


class       a__				:







				"""simple docstring"""



				def __init__(self       ,			__lowercase       ,			__lowercase=3       ,			__lowercase=32       ,			__lowercase=3       ,			__lowercase=10       ,			__lowercase=[10, 20, 30, 40]       ,			__lowercase=[1, 1, 2, 1]       ,			__lowercase=True       ,			__lowercase=True       ,			__lowercase="relu"       ,			__lowercase=3       ,			__lowercase=None       ,			):
										__lowerCAmelCase							       =				parent
										__lowerCAmelCase							       =				batch_size
										__lowerCAmelCase							       =				image_size
										__lowerCAmelCase							       =				num_channels
										__lowerCAmelCase							       =				embeddings_size
										__lowerCAmelCase							       =				hidden_sizes
										__lowerCAmelCase							       =				depths
										__lowerCAmelCase							       =				is_training
										__lowerCAmelCase							       =				use_labels
										__lowerCAmelCase							       =				hidden_act
										__lowerCAmelCase							       =				num_labels
										__lowerCAmelCase							       =				scope
										__lowerCAmelCase							       =				len(__lowercase		)




				def 					_snake_case  (self		):
										__lowerCAmelCase							       =				floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]		)

										__lowerCAmelCase							       =				None
										if self.use_labels:
																__lowerCAmelCase							       =				ids_tensor([self.batch_size]       ,			self.num_labels		)

										__lowerCAmelCase							       =				self.get_config()

										return config, pixel_values, labels




				def 					_snake_case  (self		):
										return RegNetConfig(
										    num_channels=self.num_channels       ,			embeddings_size=self.embeddings_size       ,			hidden_sizes=self.hidden_sizes       ,			depths=self.depths       ,			hidden_act=self.hidden_act       ,			num_labels=self.num_labels       ,			)




				def 					_snake_case  (self       ,			__lowercase       ,			__lowercase       ,			__lowercase		):
										__lowerCAmelCase							       =				RegNetModel(config=__lowercase		)
										model.to(__lowercase		)
										model.eval()
										__lowerCAmelCase							       =				model(__lowercase		)
										# expected last hidden states: B, C, H // 32, W // 32
										self.parent.assertEqual(
										    result.last_hidden_state.shape       ,			(self.batch_size, self.hidden_sizes[-1], self.image_size // 32, self.image_size // 32)       ,			)




				def 					_snake_case  (self       ,			__lowercase       ,			__lowercase       ,			__lowercase		):
										__lowerCAmelCase							       =				self.num_labels
										__lowerCAmelCase							       =				RegNetForImageClassification(__lowercase		)
										model.to(__lowercase		)
										model.eval()
										__lowerCAmelCase							       =				model(__lowercase       ,			labels=__lowercase		)
										self.parent.assertEqual(result.logits.shape       ,			(self.batch_size, self.num_labels)		)




				def 					_snake_case  (self		):
										__lowerCAmelCase							       =				self.prepare_config_and_inputs()
										__lowerCAmelCase       ,					__lowerCAmelCase       ,					__lowerCAmelCase							       =				config_and_inputs
										__lowerCAmelCase							       =				{'''pixel_values''': pixel_values}
										return config, inputs_dict


@require_torch
class       a__				( __A							,						__A							,						unittest.TestCase      ):







				"""simple docstring"""



				__UpperCamelCase    :		List[Any]	=	(RegNetModel, RegNetForImageClassification) if is_torch_available() else ()
				__UpperCamelCase    :		Optional[int]	=	(
				    {'feature-extraction': RegNetModel, 'image-classification': RegNetForImageClassification}
				    if is_torch_available()
				    else {}
				)

				__UpperCamelCase    :		Union[str, Any]	=	False
				__UpperCamelCase    :		Union[str, Any]	=	False
				__UpperCamelCase    :		Any	=	False
				__UpperCamelCase    :		str	=	False




				def 					_snake_case  (self		):
										__lowerCAmelCase							       =				RegNetModelTester(self		)
										__lowerCAmelCase							       =				ConfigTester(self       ,			config_class=__lowercase       ,			has_text_modality=__lowercase		)




				def 					_snake_case  (self		):
										self.create_and_test_config_common_properties()
										self.config_tester.create_and_test_config_to_json_string()
										self.config_tester.create_and_test_config_to_json_file()
										self.config_tester.create_and_test_config_from_and_save_pretrained()
										self.config_tester.create_and_test_config_with_num_labels()
										self.config_tester.check_config_can_be_init_without_params()
										self.config_tester.check_config_arguments_init()




				def 					_snake_case  (self		):
										return




				@unittest.skip(reason='''RegNet does not use inputs_embeds'''		)
				def 					_snake_case  (self		):
										pass




				@unittest.skip(reason='''RegNet does not support input and output embeddings'''		)
				def 					_snake_case  (self		):
										pass




				def 					_snake_case  (self		):
										__lowerCAmelCase       ,					__lowerCAmelCase							       =				self.model_tester.prepare_config_and_inputs_for_common()

										for model_class in self.all_model_classes:
																__lowerCAmelCase							       =				model_class(__lowercase		)
																__lowerCAmelCase							       =				inspect.signature(model.forward		)
																# signature.parameters is an OrderedDict => so arg_names order is deterministic
																__lowerCAmelCase							       =				[*signature.parameters.keys()]

																__lowerCAmelCase							       =				['''pixel_values''']
																self.assertListEqual(arg_names[:1]       ,			__lowercase		)




				def 					_snake_case  (self		):
										__lowerCAmelCase							       =				self.model_tester.prepare_config_and_inputs()
										self.model_tester.create_and_check_model(*__lowercase		)




				def 					_snake_case  (self		):
										__lowerCAmelCase       ,					__lowerCAmelCase							       =				self.model_tester.prepare_config_and_inputs_for_common()

										for model_class in self.all_model_classes:
																__lowerCAmelCase							       =				model_class(config=__lowercase		)
																for name, module in model.named_modules():
																						if isinstance(__lowercase       ,			(nn.BatchNormad, nn.GroupNorm)		):
																												self.assertTrue(
																												    torch.all(module.weight == 1		)       ,			msg=F"""Parameter {name} of model {model_class} seems not properly initialized"""       ,			)
																												self.assertTrue(
																												    torch.all(module.bias == 0		)       ,			msg=F"""Parameter {name} of model {model_class} seems not properly initialized"""       ,			)




				def 					_snake_case  (self		):
										def check_hidden_states_output(__lowercase       ,			__lowercase       ,			__lowercase		):
																__lowerCAmelCase							       =				model_class(__lowercase		)
																model.to(__lowercase		)
																model.eval()

																with torch.no_grad():
																						__lowerCAmelCase							       =				model(**self._prepare_for_class(__lowercase       ,			__lowercase		)		)

																__lowerCAmelCase							       =				outputs.encoder_hidden_states if config.is_encoder_decoder else outputs.hidden_states

																__lowerCAmelCase							       =				self.model_tester.num_stages
																self.assertEqual(len(__lowercase		)       ,			expected_num_stages + 1		)

																# RegNet's feature maps are of shape (batch_size, num_channels, height, width)
																self.assertListEqual(
																    list(hidden_states[0].shape[-2:]		)       ,			[self.model_tester.image_size // 2, self.model_tester.image_size // 2]       ,			)

										__lowerCAmelCase       ,					__lowerCAmelCase							       =				self.model_tester.prepare_config_and_inputs_for_common()
										__lowerCAmelCase							       =				['''basic''', '''bottleneck''']
										for model_class in self.all_model_classes:
																for layer_type in layers_type:
																						__lowerCAmelCase							       =				layer_type
																						__lowerCAmelCase							       =				True
																						check_hidden_states_output(__lowercase       ,			__lowercase       ,			__lowercase		)

																						# check that output_hidden_states also work using config
																						del inputs_dict["output_hidden_states"]
																						__lowerCAmelCase							       =				True

																						check_hidden_states_output(__lowercase       ,			__lowercase       ,			__lowercase		)




				def 					_snake_case  (self		):
										__lowerCAmelCase							       =				self.model_tester.prepare_config_and_inputs()
										self.model_tester.create_and_check_for_image_classification(*__lowercase		)




				@slow
				def 					_snake_case  (self		):
										for model_name in REGNET_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
																__lowerCAmelCase							       =				RegNetModel.from_pretrained(__lowercase		)
																self.assertIsNotNone(__lowercase		)

def 							__magic_name__(						):
						__lowerCAmelCase							       =				Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png''')
						return image




@require_torch
@require_vision
class       a__				( unittest.TestCase      ):







				"""simple docstring"""



				@cached_property
				def 					_snake_case  (self		):
										return (
										    AutoImageProcessor.from_pretrained(REGNET_PRETRAINED_MODEL_ARCHIVE_LIST[0]		)
										    if is_vision_available()
										    else None
										)




				@slow
				def 					_snake_case  (self		):
										__lowerCAmelCase							       =				RegNetForImageClassification.from_pretrained(REGNET_PRETRAINED_MODEL_ARCHIVE_LIST[0]		).to(__lowercase		)

										__lowerCAmelCase							       =				self.default_image_processor
										__lowerCAmelCase							       =				prepare_img()
										__lowerCAmelCase							       =				image_processor(images=__lowercase       ,			return_tensors='''pt'''		).to(__lowercase		)

										# forward pass
										with torch.no_grad():
																__lowerCAmelCase							       =				model(**__lowercase		)

										# verify the logits
										__lowerCAmelCase							       =				torch.Size((1, 10_00)		)
										self.assertEqual(outputs.logits.shape       ,			__lowercase		)

										__lowerCAmelCase							       =				torch.tensor([-0.4_1_8_0, -1.5_0_5_1, -3.4_8_3_6]		).to(__lowercase		)

										self.assertTrue(torch.allclose(outputs.logits[0, :3]       ,			__lowercase       ,			atol=1e-4		)		)





'''simple docstring'''

from __future__ import annotations

def 							__magic_name__(						lowerCamelCase,				lowerCamelCase):
						__lowerCAmelCase							       =				sorted(numsa + numsa)
						__lowerCAmelCase       ,					__lowerCAmelCase							       =				divmod(len(lowerCamelCase),				2)
						if mod == 1:
												return all_numbers[div]
						else:
												return (all_numbers[div] + all_numbers[div - 1]) / 2


if __name__ == "__main__":
	import doctest

	doctest.testmod()
	_UpperCAmelCase				: Union[str, Any]							    =				[float(x) for x in input("""Enter the elements of first array: """).split()]
	_UpperCAmelCase				: int							    =				[float(x) for x in input("""Enter the elements of second array: """).split()]
	print(f"""The median of two arrays is: {median_of_two_arrays(array_a, array_a)}""")

