


"""simple docstring"""





import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow


if is_torch_available():
 import torch

 from transformers import XLMRobertaModel



@require_sentencepiece
@require_tokenizers
@require_torch
class 		snake_case_(       unittest.TestCase			):






     @slow
     def      lowerCamelCase__     (	self  :					List[str]				):
           lowerCAmelCase					:	Optional[Any]       =   XLMRobertaModel.from_pretrained('''xlm-roberta-base'''				)
           lowerCAmelCase					:	str       =   torch.tensor([[0, 5_8_1, 1_0_2_6_9, 8_3, 9_9_9_4_2, 1_3_6, 6_0_7_4_2, 2_3, 7_0, 8_0_5_8_3, 1_8_2_7_6, 2]]				)
           # The dog is cute and lives in the garden house

           lowerCAmelCase					:	Dict       =   torch.Size((1, 1_2, 7_6_8)				)  # batch_size, sequence_length, embedding_vector_dim
           lowerCAmelCase					:	Dict       =   torch.tensor(
               [[-0.0_101, 0.1_218, -0.0_803, 0.0_801, 0.1_327, 0.0_776, -0.1_215, 0.2_383, 0.3_338, 0.3_106, 0.0_300, 0.0_252]]				)
           #  xlmr = torch.hub.load('pytorch/fairseq', 'xlmr.base')
           #  xlmr.eval()
           #  expected_output_values_last_dim = xlmr.extract_features(input_ids[0])[:, :, -1]
           with torch.no_grad():
                 lowerCAmelCase					:	Union[str, Any]       =   model(_lowercase				)['''last_hidden_state'''].detach()
           self.assertEqual(output.shape					,				_lowercase				)
           # compare the actual values for a slice of last dim
           self.assertTrue(torch.allclose(output[:, :, -1]					,				_lowercase					,				atol=1E-3				)				)






     @slow
     def      lowerCamelCase__     (	self  :					Any				):
           lowerCAmelCase					:	int       =   XLMRobertaModel.from_pretrained('''xlm-roberta-large'''				)
           lowerCAmelCase					:	int       =   torch.tensor([[0, 5_8_1, 1_0_2_6_9, 8_3, 9_9_9_4_2, 1_3_6, 6_0_7_4_2, 2_3, 7_0, 8_0_5_8_3, 1_8_2_7_6, 2]]				)
           # The dog is cute and lives in the garden house

           lowerCAmelCase					:	Any       =   torch.Size((1, 1_2, 1_0_2_4)				)  # batch_size, sequence_length, embedding_vector_dim
           lowerCAmelCase					:	Union[str, Any]       =   torch.tensor(
               [[-0.0_699, -0.0_318, 0.0_705, -0.1_241, 0.0_999, -0.0_520, 0.1_004, -0.1_838, -0.4_704, 0.1_437, 0.0_821, 0.0_126]]				)
           #  xlmr = torch.hub.load('pytorch/fairseq', 'xlmr.large')
           #  xlmr.eval()
           #  expected_output_values_last_dim = xlmr.extract_features(input_ids[0])[:, :, -1]
           with torch.no_grad():
                 lowerCAmelCase					:	List[str]       =   model(_lowercase				)['''last_hidden_state'''].detach()
           self.assertEqual(output.shape					,				_lowercase				)
           # compare the actual values for a slice of last dim
           self.assertTrue(torch.allclose(output[:, :, -1]					,				_lowercase					,				atol=1E-3				)				)






"""simple docstring"""





from torch import nn



class 		snake_case_(       nn.Module			):






     def __init__(	self  :					int					,				UpperCamelCase_  :					int					,				UpperCamelCase_  :					int				):
           super().__init__()
           lowerCAmelCase					:	str       =   class_size
           lowerCAmelCase					:	Dict       =   embed_size
           # self.mlp1 = nn.Linear(embed_size, embed_size)
           # self.mlp2 = (nn.Linear(embed_size, class_size))
           lowerCAmelCase					:	Any       =   nn.Linear(UpperCamelCase_					,				UpperCamelCase_				)






     def      lowerCamelCase__     (	self  :					List[Any]					,				UpperCamelCase_  :					Tuple				):
           # hidden_state = nn.functional.relu(self.mlp1(hidden_state))
           # hidden_state = self.mlp2(hidden_state)
           lowerCAmelCase					:	int       =   self.mlp(UpperCamelCase_				)
           return logits


