





'''simple docstring'''






import argparse

import torch

from transformers import FunnelBaseModel, FunnelConfig, FunnelModel, load_tf_weights_in_funnel
from transformers.utils import logging


logging.set_verbosity_info()


def 					_a   (__SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE   ):


  """simple docstring"""

  _UpperCamelCase       			=FunnelConfig.from_json_file(snake_case_   )
  print(f'''Building PyTorch model from configuration: {config}'''   )
  _UpperCamelCase       			=FunnelBaseModel(snake_case_   ) if base_model else FunnelModel(snake_case_   )

  # Load weights from tf checkpoint
  load_tf_weights_in_funnel(snake_case_  ,      snake_case_  ,      snake_case_   )

  # Save pytorch-model
  print(f'''Save PyTorch model to {pytorch_dump_path}'''   )
  torch.save(model.state_dict()  ,      snake_case_   )


if __name__ == "__main__":
      __lowerCamelCase						: Tuple		=   argparse.ArgumentParser()
      # Required parameters
      parser.add_argument(
          '--tf_checkpoint_path', default=None, type=str, required=True, help='Path to the TensorFlow checkpoint path.'
      )
      parser.add_argument(
          '--config_file',
          default=None,
          type=str,
          required=True,
          help='The config json file corresponding to the pre-trained model. \nThis specifies the model architecture.',
      )
      parser.add_argument(
          '--pytorch_dump_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
      )
      parser.add_argument(
          '--base_model', action='store_true', help='Whether you want just the base model (no decoder) or not.'
      )
      __lowerCamelCase						: List[Any]		=   parser.parse_args()
      convert_tf_checkpoint_to_pytorch(
          args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.base_model
      )













'''simple docstring'''






from pathlib import Path

import cva
import numpy as np
from matplotlib import pyplot as plt


def 					_a   (__SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE   ):


  """simple docstring"""

  _UpperCamelCase       			=cva.getAffineTransform(__SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE   )
  return cva.warpAffine(__SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE  ,      (rows, cols)   )


if __name__ == "__main__":
      # read original image
      __lowerCamelCase						: List[Any]		=   cva.imread(
          str(Path(__file__).resolve().parent.parent / 'image_data' / 'lena.jpg')
      )
      # turn image in gray scale value
      __lowerCamelCase						: List[Any]		=   cva.cvtColor(image, cva.COLOR_BGR2GRAY)
      # get image shape
      __lowerCamelCase		, __lowerCamelCase						: Any		=   gray_img.shape

      # set different points to rotate image
      __lowerCamelCase						: Optional[Any]		=   np.array([[50, 50], [200, 50], [50, 200]], np.floataa)
      __lowerCamelCase						: Any		=   np.array([[10, 100], [200, 50], [100, 250]], np.floataa)
      __lowerCamelCase						: int		=   np.array([[50, 50], [150, 50], [120, 200]], np.floataa)
      __lowerCamelCase						: List[Any]		=   np.array([[10, 100], [80, 50], [180, 250]], np.floataa)

      # add all rotated images in a list
      __lowerCamelCase						: int		=   [
          gray_img,
          get_rotation(gray_img, ptsa, ptsa, img_rows, img_cols),
          get_rotation(gray_img, ptsa, ptsa, img_rows, img_cols),
          get_rotation(gray_img, ptsa, ptsa, img_rows, img_cols),
      ]

      # plot different image rotations
      __lowerCamelCase						: Optional[Any]		=   plt.figure(1)
      __lowerCamelCase						: Tuple		=   ['Original', 'Rotation 1', 'Rotation 2', 'Rotation 3']
      for i, image in enumerate(images):
            plt.subplot(2, 2, i + 1), plt.imshow(image, 'gray')
            plt.title(titles[i])
            plt.axis('off')
            plt.subplots_adjust(left=0.0, bottom=0.0_5, right=1.0, top=0.9_5)
      plt.show()






