



import random

import torch
from huggingface_hub import HfApi

from diffusers import UNetaDModel


__lowerCamelCase         =			HfApi()

__lowerCamelCase         =			{}
# fmt: off
__lowerCamelCase         =			torch.tensor([
    -0.7_5_1_5, -1.6_8_8_3, 0.2_4_2_0, 0.0_3_0_0, 0.6_3_4_7, 1.3_4_3_3, -1.1_7_4_3, -3.7_4_6_7,
    1.2_3_4_2, -2.2_4_8_5, 0.4_6_3_6, 0.8_0_7_6, -0.7_9_9_1, 0.3_9_6_9, 0.8_4_9_8, 0.9_1_8_9,
    -1.8_8_8_7, -3.3_5_2_2, 0.7_6_3_9, 0.2_0_4_0, 0.6_2_7_1, -2.7_1_4_8, -1.6_3_1_6, 3.0_8_3_9,
    0.3_1_8_6, 0.2_7_2_1, -0.9_7_5_9, -1.2_4_6_1, 2.6_2_5_7, 1.3_5_5_7
])
__lowerCamelCase         =			torch.tensor([
    -2.3_6_3_9, -2.5_3_4_4, 0.0_0_5_4, -0.6_6_7_4, 1.5_9_9_0, 1.0_1_5_8, 0.3_1_2_4, -2.1_4_3_6,
    1.8_7_9_5, -2.5_4_2_9, -0.1_5_6_6, -0.3_9_7_3, 1.2_4_9_0, 2.6_4_4_7, 1.2_2_8_3, -0.5_2_0_8,
    -2.8_1_5_4, -3.5_1_1_9, 2.3_8_3_8, 1.2_0_3_3, 1.7_2_0_1, -2.1_2_5_6, -1.4_5_7_6, 2.7_9_4_8,
    2.4_2_0_4, -0.9_7_5_2, -1.2_5_4_6, 0.8_0_2_7, 3.2_7_5_8, 3.1_3_6_5
])
__lowerCamelCase         =			torch.tensor([
    -0.6_5_3_1, -0.6_8_9_1, -0.3_1_7_2, -0.5_3_7_5, -0.9_1_4_0, -0.5_3_6_7, -0.1_1_7_5, -0.7_8_6_9,
    -0.3_8_0_8, -0.4_5_1_3, -0.2_0_9_8, -0.0_0_8_3, 0.3_1_8_3, 0.5_1_4_0, 0.2_2_4_7, -0.1_3_0_4,
    -0.1_3_0_2, -0.2_8_0_2, -0.2_0_8_4, -0.2_0_2_5, -0.4_9_6_7, -0.4_8_7_3, -0.0_8_6_1, 0.6_9_2_5,
    0.0_2_5_0, 0.1_2_9_0, -0.1_5_4_3, 0.6_3_1_6, 1.0_4_6_0, 1.4_9_4_3
])
__lowerCamelCase         =			torch.tensor([
    0.0_9_1_1, 0.1_1_0_7, 0.0_1_8_2, 0.0_4_3_5, -0.0_8_0_5, -0.0_6_0_8, 0.0_3_8_1, 0.2_1_7_2,
    -0.0_2_8_0, 0.1_3_2_7, -0.0_2_9_9, -0.0_2_5_5, -0.0_0_5_0, -0.1_1_7_0, -0.1_0_4_6, 0.0_3_0_9,
    0.1_3_6_7, 0.1_7_2_8, -0.0_5_3_3, -0.0_7_4_8, -0.0_5_3_4, 0.1_6_2_4, 0.0_3_8_4, -0.1_8_0_5,
    -0.0_7_0_7, 0.0_6_4_2, 0.0_2_2_0, -0.0_1_3_4, -0.1_3_3_3, -0.1_5_0_5
])
__lowerCamelCase         =			torch.tensor([
    0.1_3_2_1, 0.1_3_3_7, 0.0_4_4_0, 0.0_6_2_2, -0.0_5_9_1, -0.0_3_7_0, 0.0_5_0_3, 0.2_1_3_3,
    -0.0_1_7_7, 0.1_4_1_5, -0.0_1_1_6, -0.0_1_1_2, 0.0_0_4_4, -0.0_9_8_0, -0.0_7_8_9, 0.0_3_9_5,
    0.1_5_0_2, 0.1_7_8_5, -0.0_4_8_8, -0.0_5_1_4, -0.0_4_0_4, 0.1_5_3_9, 0.0_4_5_4, -0.1_5_5_9,
    -0.0_6_6_5, 0.0_6_5_9, 0.0_3_8_3, -0.0_0_0_5, -0.1_2_6_6, -0.1_3_8_6
])
__lowerCamelCase         =			torch.tensor([
    0.1_1_5_4, 0.1_2_1_8, 0.0_3_0_7, 0.0_5_2_6, -0.0_7_1_1, -0.0_5_4_1, 0.0_3_6_6, 0.2_0_7_8,
    -0.0_2_6_7, 0.1_3_1_7, -0.0_2_2_6, -0.0_1_9_3, -0.0_0_1_4, -0.1_0_5_5, -0.0_9_0_2, 0.0_3_3_0,
    0.1_3_9_1, 0.1_7_0_9, -0.0_5_6_2, -0.0_6_9_3, -0.0_5_6_0, 0.1_4_8_2, 0.0_3_8_1, -0.1_6_8_3,
    -0.0_6_8_1, 0.0_6_6_1, 0.0_3_3_1, -0.0_0_4_6, -0.1_2_6_8, -0.1_4_3_1
])
__lowerCamelCase         =			torch.tensor([
    0.1_1_9_2, 0.1_2_4_0, 0.0_4_1_4, 0.0_6_0_6, -0.0_5_5_7, -0.0_4_1_2, 0.0_4_3_0, 0.2_0_4_2,
    -0.0_2_0_0, 0.1_3_8_5, -0.0_1_1_5, -0.0_1_3_2, 0.0_0_1_7, -0.0_9_6_5, -0.0_8_0_2, 0.0_3_9_8,
    0.1_4_3_3, 0.1_7_4_7, -0.0_4_5_8, -0.0_5_3_3, -0.0_4_0_7, 0.1_5_4_5, 0.0_4_1_9, -0.1_5_7_4,
    -0.0_6_4_5, 0.0_6_2_6, 0.0_3_4_1, -0.0_0_1_0, -0.1_1_9_9, -0.1_3_9_0
])
__lowerCamelCase         =			torch.tensor([
    0.1_0_7_5, 0.1_0_7_4, 0.0_2_0_5, 0.0_4_3_1, -0.0_7_7_4, -0.0_6_0_7, 0.0_2_9_8, 0.2_0_4_2,
    -0.0_3_2_0, 0.1_2_6_7, -0.0_2_8_1, -0.0_2_5_0, -0.0_0_6_4, -0.1_0_9_1, -0.0_9_4_6, 0.0_2_9_0,
    0.1_3_2_8, 0.1_6_5_0, -0.0_5_8_0, -0.0_7_3_8, -0.0_5_8_6, 0.1_4_4_0, 0.0_3_3_7, -0.1_7_4_6,
    -0.0_7_1_2, 0.0_6_0_5, 0.0_2_5_0, -0.0_0_9_9, -0.1_3_1_6, -0.1_4_7_3
])
__lowerCamelCase         =			torch.tensor([
    -1.4_5_7_2, -2.0_4_8_1, -0.0_4_1_4, -0.6_0_0_5, 1.4_1_3_6, 0.5_8_4_8, 0.4_0_2_8, -2.7_3_3_0,
    1.2_2_1_2, -2.1_2_2_8, 0.2_1_5_5, 0.4_0_3_9, 0.7_6_6_2, 2.0_5_3_5, 0.7_4_7_7, -0.3_2_4_3,
    -2.1_7_5_8, -2.7_6_4_8, 1.6_9_4_7, 0.7_0_2_6, 1.2_3_3_8, -1.6_0_7_8, -0.8_6_8_2, 2.2_8_1_0,
    1.8_5_7_4, -0.5_7_1_8, -0.5_5_8_6, -0.0_1_8_6, 2.3_4_1_5, 2.1_2_5_1])
__lowerCamelCase         =			torch.tensor([
    -1.3_6_9_0, -1.9_7_2_0, -0.4_0_9_0, -0.6_9_6_6, 1.4_6_6_0, 0.9_9_3_8, -0.1_3_8_5, -2.7_3_2_4,
    0.7_7_3_6, -1.8_9_1_7, 0.2_9_2_3, 0.4_2_9_3, 0.1_6_9_3, 1.4_1_1_2, 1.1_8_8_7, -0.3_1_8_1,
    -2.2_1_6_0, -2.6_3_8_1, 1.3_1_7_0, 0.8_1_6_3, 0.9_2_4_0, -1.6_5_4_4, -0.6_0_9_9, 2.5_2_5_9,
    1.6_4_3_0, -0.9_0_9_0, -0.9_3_9_2, -0.0_1_2_6, 2.4_2_6_8, 2.3_2_6_6
])
__lowerCamelCase         =			torch.tensor([
    -1.3_5_2_5, -1.9_6_2_8, -0.3_9_5_6, -0.6_8_6_0, 1.4_6_6_4, 1.0_0_1_4, -0.1_2_5_9, -2.7_2_1_2,
    0.7_7_7_2, -1.8_8_1_1, 0.2_9_9_6, 0.4_3_8_8, 0.1_7_0_4, 1.4_0_2_9, 1.1_7_0_1, -0.3_0_2_7,
    -2.2_0_5_3, -2.6_2_8_7, 1.3_3_5_0, 0.8_1_3_1, 0.9_2_7_4, -1.6_2_9_2, -0.6_0_9_8, 2.5_1_3_1,
    1.6_5_0_5, -0.8_9_5_8, -0.9_2_9_8, -0.0_1_5_1, 2.4_2_5_7, 2.3_3_5_5
])
__lowerCamelCase         =			torch.tensor([
    -2.0_5_8_5, -2.7_8_9_7, -0.2_8_5_0, -0.8_9_4_0, 1.9_0_5_2, 0.5_7_0_2, 0.6_3_4_5, -3.8_9_5_9,
    1.5_9_3_2, -3.2_3_1_9, 0.1_9_7_4, 0.0_2_8_7, 1.7_5_6_6, 2.6_5_4_3, 0.8_3_8_7, -0.5_3_5_1,
    -3.2_7_3_6, -4.3_3_7_5, 2.9_0_2_9, 1.6_3_9_0, 1.4_6_4_0, -2.1_7_0_1, -1.9_0_1_3, 2.9_3_4_1,
    3.4_9_8_1, -0.6_2_5_5, -1.1_6_4_4, -0.1_5_9_1, 3.7_0_9_7, 3.2_0_6_6
])
__lowerCamelCase         =			torch.tensor([
    -2.3_1_3_9, -2.5_5_9_4, -0.0_1_9_7, -0.6_7_8_5, 1.7_0_0_1, 1.1_6_0_6, 0.3_0_7_5, -2.1_7_4_0,
    1.8_0_7_1, -2.5_6_3_0, -0.0_9_2_6, -0.3_8_1_1, 1.2_1_1_6, 2.6_2_4_6, 1.2_7_3_1, -0.5_3_9_8,
    -2.8_1_5_3, -3.6_1_4_0, 2.3_8_9_3, 1.3_2_6_2, 1.6_2_5_8, -2.1_8_5_6, -1.3_2_6_7, 2.8_3_9_5,
    2.3_7_7_9, -1.0_6_2_3, -1.2_4_6_8, 0.8_9_5_9, 3.3_3_6_7, 3.2_2_4_3
])
__lowerCamelCase         =			torch.tensor([
    -2.0_6_2_8, -2.7_6_6_7, -0.2_0_8_9, -0.8_2_6_3, 2.0_5_3_9, 0.5_9_9_2, 0.6_4_9_5, -3.8_3_3_6,
    1.6_0_2_5, -3.2_8_1_7, 0.1_7_2_1, -0.0_6_3_3, 1.7_5_1_6, 2.7_0_3_9, 0.8_1_0_0, -0.5_9_0_8,
    -3.2_1_1_3, -4.4_3_4_3, 2.9_2_5_7, 1.3_6_3_2, 1.5_5_6_2, -2.1_4_8_9, -1.9_8_9_4, 3.0_5_6_0,
    3.3_3_9_6, -0.7_3_2_8, -1.0_4_1_7, 0.0_3_8_3, 3.7_0_9_3, 3.2_3_4_3
])
__lowerCamelCase         =			torch.tensor([
    -1.4_5_7_4, -2.0_5_6_9, -0.0_4_7_3, -0.6_1_1_7, 1.4_0_1_8, 0.5_7_6_9, 0.4_1_2_9, -2.7_3_4_4,
    1.2_2_4_1, -2.1_3_9_7, 0.2_0_0_0, 0.3_9_3_7, 0.7_6_1_6, 2.0_4_5_3, 0.7_3_2_4, -0.3_3_9_1,
    -2.1_7_4_6, -2.7_7_4_4, 1.6_9_6_3, 0.6_9_2_1, 1.2_1_8_7, -1.6_1_7_2, -0.8_8_7_7, 2.2_4_3_9,
    1.8_4_7_1, -0.5_8_3_9, -0.5_6_0_5, -0.0_4_6_4, 2.3_2_5_0, 2.1_2_1_9
])
# fmt: on

__lowerCamelCase         =			api.list_models(filter='''diffusers''')
for mod in models:
   if "google" in mod.author or mod.modelId == "CompVis/ldm-celebahq-256":
      __lowerCamelCase         =			'''/home/patrick/google_checkpoints/''' + mod.modelId.split('''/''')[-1]

      print(F'''Started running {mod.modelId}!!!''')

      if mod.modelId.startswith('''CompVis'''):
         __lowerCamelCase         =			UNetaDModel.from_pretrained(local_checkpoint, subfolder='''unet''')
      else:
         __lowerCamelCase         =			UNetaDModel.from_pretrained(local_checkpoint)

      torch.manual_seed(0)
      random.seed(0)

      __lowerCamelCase         =			torch.randn(1, model.config.in_channels, model.config.sample_size, model.config.sample_size)
      __lowerCamelCase         =			torch.tensor([10] * noise.shape[0])
      with torch.no_grad():
         __lowerCamelCase         =			model(noise, time_step).sample

      assert torch.allclose(
          logits[0, 0, 0, :30], results['''_'''.join('''_'''.join(mod.modelId.split('''/''')).split('''-'''))], atol=1e-3
      )
      print(F'''{mod.modelId} has passed successfully!!!''')





import copy
import inspect
import unittest

from transformers import AutoBackbone
from transformers.configuration_utils import PretrainedConfig
from transformers.testing_utils import require_timm, require_torch, torch_device
from transformers.utils.import_utils import is_torch_available

from ...test_backbone_common import BackboneTesterMixin
from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor


if is_torch_available():
   import torch

   from transformers import TimmBackbone, TimmBackboneConfig

from ...test_pipeline_mixin import PipelineTesterMixin


class   snake_case_ :




       """simple docstring"""






       def __init__(     self     ,lowercase     ,lowercase=None     ,lowercase=None     ,lowercase=None     ,lowercase="resnet50"     ,lowercase=3     ,lowercase=32     ,lowercase=3     ,lowercase=True     ,lowercase=True     ,):

             """simple docstring"""





             UpperCAmelCase_  :	Union[str, Any]				      =		parent
             UpperCAmelCase_  :	int				      =		out_indices if out_indices is not None else [4]
             UpperCAmelCase_  :	Any				      =		stage_names
             UpperCAmelCase_  :	List[Any]				      =		out_features
             UpperCAmelCase_  :	List[str]				      =		backbone
             UpperCAmelCase_  :	Union[str, Any]				      =		batch_size
             UpperCAmelCase_  :	int				      =		image_size
             UpperCAmelCase_  :	str				      =		num_channels
             UpperCAmelCase_  :	Optional[Any]				      =		use_pretrained_backbone
             UpperCAmelCase_  :	Optional[int]				      =		is_training



       def  A_   (     self):

             """simple docstring"""





             UpperCAmelCase_  :	int				      =		floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size])
             UpperCAmelCase_  :	Dict				      =		self.get_config()

             return config, pixel_values



       def  A_   (     self):

             """simple docstring"""





             return TimmBackboneConfig(
                 image_size=self.image_size     ,num_channels=self.num_channels     ,out_features=self.out_features     ,out_indices=self.out_indices     ,stage_names=self.stage_names     ,use_pretrained_backbone=self.use_pretrained_backbone     ,backbone=self.backbone     ,)



       def  A_   (     self     ,lowercase     ,lowercase):

             """simple docstring"""





             UpperCAmelCase_  :	List[Any]				      =		TimmBackbone(config=lowercase)
             model.to(lowercase)
             model.eval()
             with torch.no_grad():
                   UpperCAmelCase_  :	Union[str, Any]				      =		model(lowercase)
             self.parent.assertEqual(
                 result.feature_map[-1].shape     ,(self.batch_size, model.channels[-1], 14, 14)     ,)



       def  A_   (     self):

             """simple docstring"""





             UpperCAmelCase_  :	Tuple				      =		self.prepare_config_and_inputs()
             UpperCAmelCase_      ,      UpperCAmelCase_  :	Optional[int]				      =		config_and_inputs
             UpperCAmelCase_  :	Union[str, Any]				      =		{"pixel_values": pixel_values}
             return config, inputs_dict


@require_torch
@require_timm
class   snake_case_ (lowercase__ , lowercase__ , lowercase__ , unittest.TestCase  ):




       """simple docstring"""






       _lowerCamelCase			    =				(TimmBackbone,) if is_torch_available() else ()
       _lowerCamelCase			    =				{"""feature-extraction""": TimmBackbone} if is_torch_available() else {}
       _lowerCamelCase			    =				False
       _lowerCamelCase			    =				False
       _lowerCamelCase			    =				False
       _lowerCamelCase			    =				False



       def  A_   (     self):

             """simple docstring"""





             UpperCAmelCase_  :	Union[str, Any]				      =		TimmBackboneModelTester(self)
             UpperCAmelCase_  :	Tuple				      =		ConfigTester(self     ,config_class=lowercase     ,has_text_modality=lowercase)



       def  A_   (     self):

             """simple docstring"""





             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  A_   (     self):

             """simple docstring"""





             UpperCAmelCase_  :	int				      =		"resnet18"
             UpperCAmelCase_  :	Tuple				      =		"microsoft/resnet-18"

             UpperCAmelCase_  :	int				      =		AutoBackbone.from_pretrained(lowercase     ,use_timm_backbone=lowercase)
             UpperCAmelCase_  :	Dict				      =		AutoBackbone.from_pretrained(lowercase)

             self.assertEqual(len(timm_model.out_features)     ,len(transformers_model.out_features))
             self.assertEqual(len(timm_model.stage_names)     ,len(transformers_model.stage_names))
             self.assertEqual(timm_model.channels     ,transformers_model.channels)
             # Out indices are set to the last layer by default. For timm models, we don't know
             # the number of layers in advance, so we set it to (-1,), whereas for transformers
             # models, we set it to [len(stage_names) - 1] (kept for backward compatibility).
             self.assertEqual(timm_model.out_indices     ,(-1,))
             self.assertEqual(transformers_model.out_indices     ,[len(timm_model.stage_names) - 1])

             UpperCAmelCase_  :	Dict				      =		AutoBackbone.from_pretrained(lowercase     ,use_timm_backbone=lowercase     ,out_indices=[1, 2, 3])
             UpperCAmelCase_  :	List[str]				      =		AutoBackbone.from_pretrained(lowercase     ,out_indices=[1, 2, 3])

             self.assertEqual(timm_model.out_indices     ,transformers_model.out_indices)
             self.assertEqual(len(timm_model.out_features)     ,len(transformers_model.out_features))
             self.assertEqual(timm_model.channels     ,transformers_model.channels)



       @unittest.skip("TimmBackbone doesn't support feed forward chunking")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("TimmBackbone doesn't have num_hidden_layers attribute")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("TimmBackbone initialization is managed on the timm side")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("TimmBackbone models doesn't have inputs_embeds")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("TimmBackbone models doesn't have inputs_embeds")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("TimmBackbone model cannot be created without specifying a backbone checkpoint")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("Only checkpoints on timm can be loaded into TimmBackbone")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("model weights aren't tied in TimmBackbone.")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("model weights aren't tied in TimmBackbone.")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("Only checkpoints on timm can be loaded into TimmBackbone")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("Only checkpoints on timm can be loaded into TimmBackbone")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("TimmBackbone doesn't have hidden size info in its configuration.")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("TimmBackbone doesn't support output_attentions.")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("Safetensors is not supported by timm.")
       def  A_   (     self):

             """simple docstring"""





             pass



       @unittest.skip("Will be fixed soon by reducing the size of the model used for common tests.")
       def  A_   (     self):

             """simple docstring"""





             pass



       def  A_   (     self):

             """simple docstring"""





             UpperCAmelCase_      ,      UpperCAmelCase_  :	int				      =		self.model_tester.prepare_config_and_inputs_for_common()

             for model_class in self.all_model_classes:
                   UpperCAmelCase_  :	Union[str, Any]				      =		model_class(lowercase)
                   UpperCAmelCase_  :	Optional[Any]				      =		inspect.signature(model.forward)
                   # signature.parameters is an OrderedDict => so arg_names order is deterministic
                   UpperCAmelCase_  :	str				      =		[*signature.parameters.keys()]

                   UpperCAmelCase_  :	Any				      =		["pixel_values"]
                   self.assertListEqual(arg_names[:1]     ,lowercase)



       def  A_   (     self):

             """simple docstring"""





             UpperCAmelCase_      ,      UpperCAmelCase_  :	Tuple				      =		self.model_tester.prepare_config_and_inputs_for_common()
             UpperCAmelCase_  :	Dict				      =		True
             UpperCAmelCase_  :	str				      =		self.has_attentions

             # no need to test all models as different heads yield the same functionality
             UpperCAmelCase_  :	str				      =		self.all_model_classes[0]
             UpperCAmelCase_  :	List[Any]				      =		model_class(lowercase)
             model.to(lowercase)

             UpperCAmelCase_  :	Any				      =		self._prepare_for_class(lowercase     ,lowercase)
             UpperCAmelCase_  :	Optional[int]				      =		model(**lowercase)
             UpperCAmelCase_  :	Optional[Any]				      =		outputs[0][-1]

             # Encoder-/Decoder-only models
             UpperCAmelCase_  :	List[Any]				      =		outputs.hidden_states[0]
             hidden_states.retain_grad()

             if self.has_attentions:
                   UpperCAmelCase_  :	int				      =		outputs.attentions[0]
                   attentions.retain_grad()

             output.flatten()[0].backward(retain_graph=lowercase)

             self.assertIsNotNone(hidden_states.grad)

             if self.has_attentions:
                   self.assertIsNotNone(attentions.grad)



       def  A_   (     self):

             """simple docstring"""





             UpperCAmelCase_      ,      UpperCAmelCase_  :	List[Any]				      =		self.model_tester.prepare_config_and_inputs_for_common()

             for model_class in self.all_model_classes:
                   UpperCAmelCase_  :	Any				      =		model_class(lowercase)
                   model.to(lowercase)
                   model.eval()
                   UpperCAmelCase_  :	Tuple				      =		model(**lowercase)

                   self.assertEqual(len(result.feature_maps)     ,len(config.out_indices))
                   self.assertEqual(len(model.channels)     ,len(config.out_indices))

                   # Check output of last stage is taken if out_features=None, out_indices=None
                   UpperCAmelCase_  :	Tuple				      =		copy.deepcopy(lowercase)
                   UpperCAmelCase_  :	List[Any]				      =		None
                   UpperCAmelCase_  :	Optional[Any]				      =		model_class(lowercase)
                   model.to(lowercase)
                   model.eval()
                   UpperCAmelCase_  :	Tuple				      =		model(**lowercase)

                   self.assertEqual(len(result.feature_maps)     ,1)
                   self.assertEqual(len(model.channels)     ,1)

                   # Check backbone can be initialized with fresh weights
                   UpperCAmelCase_  :	str				      =		copy.deepcopy(lowercase)
                   UpperCAmelCase_  :	Optional[Any]				      =		False
                   UpperCAmelCase_  :	List[str]				      =		model_class(lowercase)
                   model.to(lowercase)
                   model.eval()
                   UpperCAmelCase_  :	Union[str, Any]				      =		model(**lowercase)
