



'''simple docstring'''



import warnings
from typing import List, Optional, Union

from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, PreTokenizedInput, TextInput, TruncationStrategy
from ...utils import TensorType






class 			_SCREAMING_SNAKE_CASE				(lowercase__      ):
			A__								=  ['image_processor', 'tokenizer']
			A__								=  'LayoutLMv2ImageProcessor'
			A__								=  ('LayoutLMv2Tokenizer', 'LayoutLMv2TokenizerFast')



			def __init__(     self		:						str    ,			__UpperCamelCase		:						List[Any]=None    ,			__UpperCamelCase		:						Dict=None    ,			**__UpperCamelCase		:						int			)      ->      Union[str, Any]:
							"""simple docstring"""





							snake_case__      :   str      =    None
							if "feature_extractor" in kwargs:
											warnings.warn(
											    '''The `feature_extractor` argument is deprecated and will be removed in v5, use `image_processor`'''
											    ''' instead.'''    ,			__UpperCamelCase    ,			)
											snake_case__      :   Optional[int]      =    kwargs.pop('''feature_extractor'''			)

							snake_case__      :   Union[str, Any]      =    image_processor if image_processor is not None else feature_extractor
							if image_processor is None:
											raise ValueError('''You need to specify an `image_processor`.'''			)
							if tokenizer is None:
											raise ValueError('''You need to specify a `tokenizer`.'''			)

							super().__init__(__UpperCamelCase    ,			__UpperCamelCase			)



			def __call__(     self		:						Tuple    ,			__UpperCamelCase		:						Any    ,			__UpperCamelCase		:						Union[TextInput, PreTokenizedInput, List[TextInput], List[PreTokenizedInput]] = None    ,			__UpperCamelCase		:						Optional[Union[PreTokenizedInput, List[PreTokenizedInput]]] = None    ,			__UpperCamelCase		:						Union[List[List[int]], List[List[List[int]]]] = None    ,			__UpperCamelCase		:						Optional[Union[List[int], List[List[int]]]] = None    ,			__UpperCamelCase		:						bool = True    ,			__UpperCamelCase		:						Union[bool, str, PaddingStrategy] = False    ,			__UpperCamelCase		:						Union[bool, str, TruncationStrategy] = False    ,			__UpperCamelCase		:						Optional[int] = None    ,			__UpperCamelCase		:						int = 0    ,			__UpperCamelCase		:						Optional[int] = None    ,			__UpperCamelCase		:						Optional[bool] = None    ,			__UpperCamelCase		:						Optional[bool] = None    ,			__UpperCamelCase		:						bool = False    ,			__UpperCamelCase		:						bool = False    ,			__UpperCamelCase		:						bool = False    ,			__UpperCamelCase		:						bool = False    ,			__UpperCamelCase		:						bool = True    ,			__UpperCamelCase		:						Optional[Union[str, TensorType]] = None    ,			**__UpperCamelCase		:						Tuple    ,			)      ->      BatchEncoding:
							"""simple docstring"""





							if self.image_processor.apply_ocr and (boxes is not None):
											raise ValueError(
											    '''You cannot provide bounding boxes if you initialized the image processor with apply_ocr set to True.'''			)

							if self.image_processor.apply_ocr and (word_labels is not None):
											raise ValueError(
											    '''You cannot provide word labels if you initialized the image processor with apply_ocr set to True.'''			)

							if return_overflowing_tokens is True and return_offsets_mapping is False:
											raise ValueError('''You cannot return overflowing tokens without returning the offsets mapping.'''			)

							# first, apply the image processor
							snake_case__      :   Tuple      =    self.image_processor(images=__UpperCamelCase    ,			return_tensors=__UpperCamelCase			)

							# second, apply the tokenizer
							if text is not None and self.image_processor.apply_ocr and text_pair is None:
											if isinstance(__UpperCamelCase    ,			__UpperCamelCase			):
															snake_case__      :   Union[str, Any]      =    [text]  # add batch dimension (as the image processor always adds a batch dimension)
											snake_case__      :   List[Any]      =    features['''words''']

							snake_case__      :   List[str]      =    self.tokenizer(
							    text=text if text is not None else features['''words''']    ,			text_pair=text_pair if text_pair is not None else None    ,			boxes=boxes if boxes is not None else features['''boxes''']    ,			word_labels=__UpperCamelCase    ,			add_special_tokens=__UpperCamelCase    ,			padding=__UpperCamelCase    ,			truncation=__UpperCamelCase    ,			max_length=__UpperCamelCase    ,			stride=__UpperCamelCase    ,			pad_to_multiple_of=__UpperCamelCase    ,			return_token_type_ids=__UpperCamelCase    ,			return_attention_mask=__UpperCamelCase    ,			return_overflowing_tokens=__UpperCamelCase    ,			return_special_tokens_mask=__UpperCamelCase    ,			return_offsets_mapping=__UpperCamelCase    ,			return_length=__UpperCamelCase    ,			verbose=__UpperCamelCase    ,			return_tensors=__UpperCamelCase    ,			**__UpperCamelCase    ,			)

							# add pixel values
							snake_case__      :   Union[str, Any]      =    features.pop('''pixel_values'''			)
							if return_overflowing_tokens is True:
											snake_case__      :   Tuple      =    self.get_overflowing_images(__UpperCamelCase    ,			encoded_inputs['''overflow_to_sample_mapping''']			)
							snake_case__      :   List[Any]      =    images

							return encoded_inputs



			def 				lowerCAmelCase (     self		:						int    ,			__UpperCamelCase		:						List[str]    ,			__UpperCamelCase		:						Any			)      ->      Optional[int]:
							"""simple docstring"""





							snake_case__      :   Optional[int]      =    []
							for sample_idx in overflow_to_sample_mapping:
											images_with_overflow.append(images[sample_idx]			)

							if len(__UpperCamelCase			) != len(__UpperCamelCase			):
											raise ValueError(
											    '''Expected length of images to be the same as the length of `overflow_to_sample_mapping`, but got'''
											    F''' {len(__UpperCamelCase			)} and {len(__UpperCamelCase			)}'''			)

							return images_with_overflow



			def 				lowerCAmelCase (     self		:						Tuple    ,			*__UpperCamelCase		:						Optional[int]    ,			**__UpperCamelCase		:						int			)      ->      List[Any]:
							"""simple docstring"""





							return self.tokenizer.batch_decode(*__UpperCamelCase    ,			**__UpperCamelCase			)



			def 				lowerCAmelCase (     self		:						Union[str, Any]    ,			*__UpperCamelCase		:						str    ,			**__UpperCamelCase		:						Any			)      ->      Union[str, Any]:
							"""simple docstring"""





							return self.tokenizer.decode(*__UpperCamelCase    ,			**__UpperCamelCase			)



			@property
			def 				lowerCAmelCase (     self		:						Union[str, Any]			)      ->      Tuple:
							"""simple docstring"""





							return ["input_ids", "bbox", "token_type_ids", "attention_mask", "image"]



			@property
			def 				lowerCAmelCase (     self		:						List[str]			)      ->      str:
							"""simple docstring"""





							warnings.warn(
							    '''`feature_extractor_class` is deprecated and will be removed in v5. Use `image_processor_class` instead.'''    ,			__UpperCamelCase    ,			)
							return self.image_processor_class







			@property
			def 				lowerCAmelCase (     self		:						Dict			)      ->      str:
							"""simple docstring"""





							warnings.warn(
							    '''`feature_extractor` is deprecated and will be removed in v5. Use `image_processor` instead.'''    ,			__UpperCamelCase    ,			)
							return self.image_processor












'''simple docstring'''






import unittest

from transformers import YosoConfig, is_torch_available
from transformers.testing_utils import require_torch, slow, torch_device

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


if is_torch_available():
      import torch

      from transformers import (
          YosoForMaskedLM,
          YosoForMultipleChoice,
          YosoForQuestionAnswering,
          YosoForSequenceClassification,
          YosoForTokenClassification,
          YosoModel,
      )
      from transformers.models.yoso.modeling_yoso import YOSO_PRETRAINED_MODEL_ARCHIVE_LIST




class a_     :







   def __init__(self       , __a       , __a=1_3       , __a=7       , __a=True       , __a=True       , __a=True       , __a=True       , __a=9_9       , __a=3_2       , __a=5       , __a=4       , __a=3_7       , __a="gelu"       , __a=0.1       , __a=0.1       , __a=5_1_2       , __a=1_6       , __a=2       , __a=0.02       , __a=3       , __a=4       , __a=None       , )      ->   int:
      """simple docstring"""






      __snake_case					:   Union[str, Any]  				=			parent
      __snake_case					:   Dict  				=			batch_size
      __snake_case					:   Union[str, Any]  				=			seq_length
      __snake_case					:   str  				=			is_training
      __snake_case					:   Optional[Any]  				=			use_input_mask
      __snake_case					:   Dict  				=			use_token_type_ids
      __snake_case					:   Union[str, Any]  				=			use_labels
      __snake_case					:   Optional[Any]  				=			vocab_size
      __snake_case					:   Optional[Any]  				=			hidden_size
      __snake_case					:   int  				=			num_hidden_layers
      __snake_case					:   Any  				=			num_attention_heads
      __snake_case					:   Optional[Any]  				=			intermediate_size
      __snake_case					:   List[str]  				=			hidden_act
      __snake_case					:   List[Any]  				=			hidden_dropout_prob
      __snake_case					:   Optional[Any]  				=			attention_probs_dropout_prob
      __snake_case					:   str  				=			max_position_embeddings
      __snake_case					:   str  				=			type_vocab_size
      __snake_case					:   Dict  				=			type_sequence_label_size
      __snake_case					:   int  				=			initializer_range
      __snake_case					:   Dict  				=			num_labels
      __snake_case					:   Optional[int]  				=			num_choices
      __snake_case					:   Dict  				=			scope







   def      SCREAMING_SNAKE_CASE__       (self)      ->   List[Any]:
      """simple docstring"""






      __snake_case					:   Optional[int]  				=			ids_tensor([self.batch_size, self.seq_length]       , self.vocab_size)

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

      __snake_case					:   Tuple  				=			None
      if self.use_token_type_ids:
         __snake_case					:   Union[str, Any]  				=			ids_tensor([self.batch_size, self.seq_length]       , self.type_vocab_size)

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

      __snake_case					:   List[str]  				=			self.get_config()

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







   def      SCREAMING_SNAKE_CASE__       (self)      ->   List[str]:
      """simple docstring"""






      return YosoConfig(
          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=__a       , initializer_range=self.initializer_range       , )







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Dict:
      """simple docstring"""






      __snake_case					:   Tuple  				=			self.get_config()
      __snake_case					:   Tuple  				=			3_0_0
      return config







   def      SCREAMING_SNAKE_CASE__       (self)      ->   str:
      """simple docstring"""






      (
          (
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,
      )					:   Optional[Any]  				=			self.prepare_config_and_inputs()

      __snake_case					:   Optional[int]  				=			True
      __snake_case					:   Optional[int]  				=			floats_tensor([self.batch_size, self.seq_length, self.hidden_size])
      __snake_case					:   Dict  				=			ids_tensor([self.batch_size, self.seq_length]       , vocab_size=2)

      return (
          config,
          input_ids,
          token_type_ids,
          input_mask,
          sequence_labels,
          token_labels,
          choice_labels,
          encoder_hidden_states,
          encoder_attention_mask,
      )







   def      SCREAMING_SNAKE_CASE__       (self       , __a       , __a       , __a       , __a       , __a       , __a       , __a)      ->   Dict:
      """simple docstring"""






      __snake_case					:   Optional[Any]  				=			YosoModel(config=__a)
      model.to(__a)
      model.eval()
      __snake_case					:   Optional[Any]  				=			model(__a       , attention_mask=__a       , token_type_ids=__a)
      __snake_case					:   int  				=			model(__a       , token_type_ids=__a)
      __snake_case					:   Optional[Any]  				=			model(__a)
      self.parent.assertEqual(result.last_hidden_state.shape       , (self.batch_size, self.seq_length, self.hidden_size))







   def      SCREAMING_SNAKE_CASE__       (self       , __a       , __a       , __a       , __a       , __a       , __a       , __a       , __a       , __a       , )      ->   int:
      """simple docstring"""






      __snake_case					:   Optional[Any]  				=			True
      __snake_case					:   Dict  				=			YosoModel(__a)
      model.to(__a)
      model.eval()
      __snake_case					:   List[str]  				=			model(
          __a       , attention_mask=__a       , token_type_ids=__a       , encoder_hidden_states=__a       , encoder_attention_mask=__a       , )
      __snake_case					:   List[Any]  				=			model(
          __a       , attention_mask=__a       , token_type_ids=__a       , encoder_hidden_states=__a       , )
      __snake_case					:   List[Any]  				=			model(__a       , attention_mask=__a       , token_type_ids=__a)
      self.parent.assertEqual(result.last_hidden_state.shape       , (self.batch_size, self.seq_length, self.hidden_size))







   def      SCREAMING_SNAKE_CASE__       (self       , __a       , __a       , __a       , __a       , __a       , __a       , __a)      ->   Union[str, Any]:
      """simple docstring"""






      __snake_case					:   Union[str, Any]  				=			YosoForMaskedLM(config=__a)
      model.to(__a)
      model.eval()
      __snake_case					:   Union[str, Any]  				=			model(__a       , attention_mask=__a       , token_type_ids=__a       , labels=__a)
      self.parent.assertEqual(result.logits.shape       , (self.batch_size, self.seq_length, self.vocab_size))







   def      SCREAMING_SNAKE_CASE__       (self       , __a       , __a       , __a       , __a       , __a       , __a       , __a)      ->   int:
      """simple docstring"""






      __snake_case					:   List[Any]  				=			YosoForQuestionAnswering(config=__a)
      model.to(__a)
      model.eval()
      __snake_case					:   str  				=			model(
          __a       , attention_mask=__a       , token_type_ids=__a       , start_positions=__a       , end_positions=__a       , )
      self.parent.assertEqual(result.start_logits.shape       , (self.batch_size, self.seq_length))
      self.parent.assertEqual(result.end_logits.shape       , (self.batch_size, self.seq_length))







   def      SCREAMING_SNAKE_CASE__       (self       , __a       , __a       , __a       , __a       , __a       , __a       , __a)      ->   int:
      """simple docstring"""






      __snake_case					:   str  				=			self.num_labels
      __snake_case					:   Dict  				=			YosoForSequenceClassification(__a)
      model.to(__a)
      model.eval()
      __snake_case					:   Optional[int]  				=			model(__a       , attention_mask=__a       , token_type_ids=__a       , labels=__a)
      self.parent.assertEqual(result.logits.shape       , (self.batch_size, self.num_labels))







   def      SCREAMING_SNAKE_CASE__       (self       , __a       , __a       , __a       , __a       , __a       , __a       , __a)      ->   Dict:
      """simple docstring"""






      __snake_case					:   str  				=			self.num_labels
      __snake_case					:   Dict  				=			YosoForTokenClassification(config=__a)
      model.to(__a)
      model.eval()
      __snake_case					:   Tuple  				=			model(__a       , attention_mask=__a       , token_type_ids=__a       , labels=__a)
      self.parent.assertEqual(result.logits.shape       , (self.batch_size, self.seq_length, self.num_labels))







   def      SCREAMING_SNAKE_CASE__       (self       , __a       , __a       , __a       , __a       , __a       , __a       , __a)      ->   str:
      """simple docstring"""






      __snake_case					:   int  				=			self.num_choices
      __snake_case					:   Tuple  				=			YosoForMultipleChoice(config=__a)
      model.to(__a)
      model.eval()
      __snake_case					:   Any  				=			input_ids.unsqueeze(1).expand(-1       , self.num_choices       , -1).contiguous()
      __snake_case					:   Tuple  				=			token_type_ids.unsqueeze(1).expand(-1       , self.num_choices       , -1).contiguous()
      __snake_case					:   List[str]  				=			input_mask.unsqueeze(1).expand(-1       , self.num_choices       , -1).contiguous()
      __snake_case					:   Optional[int]  				=			model(
          __a       , attention_mask=__a       , token_type_ids=__a       , labels=__a       , )
      self.parent.assertEqual(result.logits.shape       , (self.batch_size, self.num_choices))







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Dict:
      """simple docstring"""






      __snake_case					:   int  				=			self.prepare_config_and_inputs()
      (
          (
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,(
          __snake_case
      )				,
      )					:   Union[str, Any]  				=			config_and_inputs
      __snake_case					:   Optional[int]  				=			{'input_ids': input_ids, 'token_type_ids': token_type_ids, 'attention_mask': input_mask}
      return config, inputs_dict




@require_torch
class a_     (     UpperCamelCase_		,   UpperCamelCase_		,   unittest.TestCase				):
   _snake_case	   =				(
       (
           YosoModel,
           YosoForMaskedLM,
           YosoForMultipleChoice,
           YosoForQuestionAnswering,
           YosoForSequenceClassification,
           YosoForTokenClassification,
       )
       if is_torch_available()
       else ()
   )
   _snake_case	   =				False
   _snake_case	   =				False
   _snake_case	   =				False

   _snake_case	   =				()
   _snake_case	   =				(
       {
           """feature-extraction""": YosoModel,
           """fill-mask""": YosoForMaskedLM,
           """question-answering""": YosoForQuestionAnswering,
           """text-classification""": YosoForSequenceClassification,
           """token-classification""": YosoForTokenClassification,
           """zero-shot""": YosoForSequenceClassification,
       }
       if is_torch_available()
       else {}
   )







   def      SCREAMING_SNAKE_CASE__       (self)      ->   List[str]:
      """simple docstring"""






      __snake_case					:   Optional[Any]  				=			YosoModelTester(self)
      __snake_case					:   List[Any]  				=			ConfigTester(self       , config_class=__a       , hidden_size=3_7)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Dict:
      """simple docstring"""






      self.config_tester.run_common_tests()







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Tuple:
      """simple docstring"""






      __snake_case					:   List[Any]  				=			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_model(*__a)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   List[str]:
      """simple docstring"""






      __snake_case					:   Tuple  				=			self.model_tester.prepare_config_and_inputs()
      for type in ["absolute", "relative_key", "relative_key_query"]:
         __snake_case					:   List[Any]  				=			type
         self.model_tester.create_and_check_model(*__a)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Optional[Any]:
      """simple docstring"""






      __snake_case					:   List[Any]  				=			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_for_masked_lm(*__a)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Optional[Any]:
      """simple docstring"""






      __snake_case					:   Optional[int]  				=			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_for_multiple_choice(*__a)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Union[str, Any]:
      """simple docstring"""






      __snake_case					:   str  				=			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_for_question_answering(*__a)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   int:
      """simple docstring"""






      __snake_case					:   Optional[int]  				=			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_for_sequence_classification(*__a)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Optional[int]:
      """simple docstring"""






      __snake_case					:   List[str]  				=			self.model_tester.prepare_config_and_inputs()
      self.model_tester.create_and_check_for_token_classification(*__a)







   @slow
   def      SCREAMING_SNAKE_CASE__       (self)      ->   List[str]:
      """simple docstring"""






      for model_name in YOSO_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
         __snake_case					:   Tuple  				=			YosoModel.from_pretrained(__a)
         self.assertIsNotNone(__a)







   def      SCREAMING_SNAKE_CASE__       (self)      ->   Any:
      """simple docstring"""






      return




@require_torch
class a_     (     unittest.TestCase				):







   @slow
   def      SCREAMING_SNAKE_CASE__       (self)      ->   Tuple:
      """simple docstring"""






      __snake_case					:   str  				=			YosoModel.from_pretrained('uw-madison/yoso-4096')
      __snake_case					:   str  				=			torch.tensor([[0, 1, 2, 3, 4, 5]])

      with torch.no_grad():
         __snake_case					:   str  				=			model(__a)[0]

      __snake_case					:   Union[str, Any]  				=			torch.Size((1, 6, 7_6_8))
      self.assertEqual(output.shape       , __a)

      __snake_case					:   Dict  				=			torch.tensor(
          [[[-0.0_611, 0.1_242, 0.0_840], [0.0_280, -0.0_048, 0.1_125], [0.0_106, 0.0_226, 0.0_751]]])

      self.assertTrue(torch.allclose(output[:, :3, :3]       , __a       , atol=1E-4))







   @slow
   def      SCREAMING_SNAKE_CASE__       (self)      ->   int:
      """simple docstring"""






      __snake_case					:   Optional[Any]  				=			YosoForMaskedLM.from_pretrained('uw-madison/yoso-4096')
      __snake_case					:   Tuple  				=			torch.tensor([[0, 1, 2, 3, 4, 5]])

      with torch.no_grad():
         __snake_case					:   Any  				=			model(__a)[0]

      __snake_case					:   List[str]  				=			5_0_2_6_5

      __snake_case					:   List[str]  				=			torch.Size((1, 6, vocab_size))
      self.assertEqual(output.shape       , __a)

      __snake_case					:   str  				=			torch.tensor(
          [[[-2.1_313, -3.7_285, -2.2_407], [-2.7_047, -3.3_314, -2.6_408], [0.0_629, -2.5_166, -0.3_356]]])

      self.assertTrue(torch.allclose(output[:, :3, :3]       , __a       , atol=1E-4))







   @slow
   def      SCREAMING_SNAKE_CASE__       (self)      ->   Optional[int]:
      """simple docstring"""






      __snake_case					:   Dict  				=			YosoForMaskedLM.from_pretrained('uw-madison/yoso-4096')
      __snake_case					:   Optional[Any]  				=			torch.arange(4_0_9_6).unsqueeze(0)

      with torch.no_grad():
         __snake_case					:   Dict  				=			model(__a)[0]

      __snake_case					:   List[str]  				=			5_0_2_6_5

      __snake_case					:   List[Any]  				=			torch.Size((1, 4_0_9_6, vocab_size))
      self.assertEqual(output.shape       , __a)

      __snake_case					:   Tuple  				=			torch.tensor(
          [[[-2.3_914, -4.3_742, -5.0_956], [-4.0_988, -4.2_384, -7.0_406], [-3.1_427, -3.7_192, -6.6_800]]])

      self.assertTrue(torch.allclose(output[:, :3, :3]       , __a       , atol=1E-4))