code: def convert_weights_and_push(
      save_directory: Path,
      model_name: str = None,
      push_to_hub: bool = True,
  ):
      filename = "imagenet-1k-id2label.json"
      num_labels = 1000
      expected_shape = (1, num_labels)
  
      repo_id = "huggingface/label-files"
      num_labels = num_labels
      id2label = json.load(
          open(
              hf_hub_download(repo_id, filename, repo_type="dataset"),
              "r",
          )
      )
      id2label = {int(k): v for k, v in id2label.items()}
  
      id2label = id2label
      label2id = {v: k for k, v in id2label.items()}
  
      ImageNetPreTrainedConfig = partial(
          ResNetConfig,
          num_labels=num_labels,
          id2label=id2label,
          label2id=label2id,
      )
  
      names_to_config = {
          "resnet18": ImageNetPreTrainedConfig(
              depths=[2, 2, 2, 2],
              hidden_sizes=[64, 128, 256, 512],
              layer_type="basic",
          ),
          "resnet26": ImageNetPreTrainedConfig(
              depths=[2, 2, 2, 2],
              hidden_sizes=[256, 512, 1024, 2048],
              layer_type="bottleneck",
          ),
          "resnet34": ImageNetPreTrainedConfig(
              depths=[3, 4, 6, 3],
              hidden_sizes=[64, 128, 256, 512],
              layer_type="basic",
          ),
          "resnet50": ImageNetPreTrainedConfig(
              depths=[3, 4, 6, 3],
              hidden_sizes=[256, 512, 1024, 2048],
              layer_type="bottleneck",
          ),
          "resnet101": ImageNetPreTrainedConfig(
              depths=[3, 4, 23, 3],
              hidden_sizes=[256, 512, 1024, 2048],
              layer_type="bottleneck",
          ),
          "resnet152": ImageNetPreTrainedConfig(
              depths=[3, 8, 36, 3],
              hidden_sizes=[256, 512, 1024, 2048],
              layer_type="bottleneck",
          ),
      }
  
      if model_name:
          convert_weight_and_push(
              model_name,
              names_to_config[model_name],
              save_directory,
              push_to_hub,
          )
      else:
          for model_name, config in names_to_config.items():
              convert_weight_and_push(
                  model_name, config, save_directory, push_to_hub
              )
      return config, expected_shape
  
imports: import argparse
  import json
  from dataclasses import dataclass, field
  from functools import partial
  from pathlib import Path
  from typing import List
  import torch
  import torch.nn
  from torch import Tensor
  import timm
  from huggingface_hub import hf_hub_download
  from transformers import AutoFeatureExtractor, ResNetConfig, ResNetForImageClassification
  from transformers.utils import logging
label_desc: Use image node_id 2 for calling a global function with example usage: convert_weights_and_push(save_directory, model_name, push_to_hub) and returns: config,  expected_shape