code: 
  
  from typing import Dict, List, Optional, Union
  
  import numpy as np
  
  from ...image_processing_utils import BaseImageProcessor, BatchFeature, get_size_dict
  from ...image_transforms import center_crop, normalize, rescale, resize, to_channel_dimension_format
  from ...image_utils import (
      IMAGENET_STANDARD_MEAN,
      IMAGENET_STANDARD_STD,
      ChannelDimension,
      ImageInput,
      PILImageResampling,
      make_list_of_images,
      to_numpy_array,
      valid_images,
  )
  from ...utils import TensorType, is_vision_available, logging
  
  
  if is_vision_available():
         import PIL
  
  
  lowerCamelCase     =      logging.get_logger(__name__)
  
  
  
  
  
  
  
  class 		__magic_name__    (							lowerCamelCase__							):
  
     '''simple docstring'''
  
  
  
  
     lowerCamelCase__				:			List[Any]												=     ['pixel_values']
  
  
  
     def __init__(       self,					lowercase_ = True,					lowercase_ = None,					lowercase_ = PIL.Image.NEAREST,					lowercase_ = False,					lowercase_ = None,					lowercase_ = 1 / 255,					lowercase_ = False,					lowercase_ = True,					lowercase_ = True,					lowercase_ = None,					lowercase_ = None,					lowercase_ = True,					**lowercase_,					)							->					None:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       super().__init__(**lowercase_ )
       a__						=size if size is not None else {'''height''': 346, '''width''': 346}
       a__						=get_size_dict(lowercase_ )
       a__						=crop_size if crop_size is not None else {'''height''': 289, '''width''': 289}
       a__						=get_size_dict(lowercase_,					param_name='''crop_size''' )
  
       a__						=do_resize
       a__						=size
       a__						=resample
       a__						=do_center_crop
       a__						=crop_size
       a__						=do_rescale
       a__						=rescale_factor
       a__						=rescale_offset
       a__						=do_normalize
       a__						=image_mean if image_mean is not None else IMAGENET_STANDARD_MEAN
       a__						=image_std if image_std is not None else IMAGENET_STANDARD_STD
       a__						=include_top
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_,					lowercase_ = PIL.Image.NEAREST,					lowercase_ = None,					**lowercase_,					)							->					np.ndarray:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       a__						=get_size_dict(lowercase_ )
       if "height" not in size or "width" not in size:
         raise ValueError(F"""The size dictionary must have keys 'height' and 'width'. Got {size.keys()}""" )
       return resize(
           lowercase_,					size=(size['''height'''], size['''width''']),					resample=lowercase_,					data_format=lowercase_,					**lowercase_ )
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_,					lowercase_ = None,					**lowercase_,					)							->					np.ndarray:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       a__						=get_size_dict(lowercase_ )
       if "height" not in size or "width" not in size:
         raise ValueError(F"""The size dictionary must have keys 'height' and 'width'. Got {size.keys()}""" )
       return center_crop(lowercase_,					size=(size['''height'''], size['''width''']),					data_format=lowercase_,					**lowercase_ )
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_,					lowercase_ = True,					lowercase_ = None,					**lowercase_,					)							->					Union[str, Any]:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       if offset:
         a__						=(image - 127.5) * scale
         if data_format is not None:
           a__						=to_channel_dimension_format(lowercase_,					lowercase_ )
         a__						=rescaled_image.astype(np.floataa )
       else:
         a__						=rescale(lowercase_,					scale=lowercase_,					data_format=lowercase_,					**lowercase_ )
       return rescaled_image
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_,					lowercase_,					lowercase_ = None,					**lowercase_,					)							->					np.ndarray:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       return normalize(lowercase_,					mean=lowercase_,					std=lowercase_,					data_format=lowercase_,					**lowercase_ )
  
  
  
     def 				_UpperCAmelCase				(       self,					lowercase_,					lowercase_ = None,					lowercase_ = None,					lowercase_=None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = None,					lowercase_ = ChannelDimension.FIRST,					**lowercase_,					)							->					PIL.Image.Image:
  
  
  
  
  
  
       """simple docstring"""
  
  
  
  
  
  
       a__						=do_resize if do_resize is not None else self.do_resize
       a__						=resample if resample is not None else self.resample
       a__						=do_center_crop if do_center_crop is not None else self.do_center_crop
       a__						=do_rescale if do_rescale is not None else self.do_rescale
       a__						=rescale_factor if rescale_factor is not None else self.rescale_factor
       a__						=rescale_offset if rescale_offset is not None else self.rescale_offset
       a__						=do_normalize if do_normalize is not None else self.do_normalize
       a__						=image_mean if image_mean is not None else self.image_mean
       a__						=image_std if image_std is not None else self.image_std
       a__						=include_top if include_top is not None else self.include_top
  
       a__						=size if size is not None else self.size
       a__						=get_size_dict(lowercase_ )
       a__						=crop_size if crop_size is not None else self.crop_size
       a__						=get_size_dict(lowercase_,					param_name='''crop_size''' )
  
       a__						=make_list_of_images(lowercase_ )
  
       if not valid_images(lowercase_ ):
         raise ValueError(
             '''Invalid image type. Must be of type PIL.Image.Image, numpy.ndarray, '''
             '''torch.Tensor, tf.Tensor or jax.ndarray.''' )
  
       if do_resize and size is None or resample is None:
         raise ValueError('''Size and resample must be specified if do_resize is True.''' )
  
       if do_center_crop and crop_size is None:
         raise ValueError('''Crop size must be specified if do_center_crop is True.''' )
  
       if do_rescale and rescale_factor is None:
         raise ValueError('''Rescale factor must be specified if do_rescale is True.''' )
  
       if do_normalize and (image_mean is None or image_std is None):
         raise ValueError('''Image mean and std must be specified if do_normalize is True.''' )
  
       # All transformations expect numpy arrays.
       a__						=[to_numpy_array(lowercase_ ) for image in images]
  
       if do_resize:
         a__						=[self.resize(image=lowercase_,					size=lowercase_,					resample=lowercase_ ) for image in images]
  
       if do_center_crop:
         a__						=[self.center_crop(image=lowercase_,					size=lowercase_ ) for image in images]
  
       if do_rescale:
         a__						=[self.rescale(image=lowercase_,					scale=lowercase_,					offset=lowercase_ ) for image in images]
  
       if do_normalize:
         a__						=[self.normalize(image=lowercase_,					mean=lowercase_,					std=lowercase_ ) for image in images]
  
       if include_top:
         a__						=[self.normalize(image=lowercase_,					mean=[0, 0, 0],					std=lowercase_ ) for image in images]
  
       a__						=[to_channel_dimension_format(lowercase_,					lowercase_ ) for image in images]
  
       a__						={'''pixel_values''': images}
       return BatchFeature(data=lowercase_,					tensor_type=lowercase_ )
  
style_context: 
  
  import os
  import random
  from pathlib import Path
  from typing import List
  
  import numpy as np
  import torch
  from torch.cuda.amp import GradScaler
  
  from .utils import (
      MODEL_NAME,
      OPTIMIZER_NAME,
      RNG_STATE_NAME,
      SCALER_NAME,
      SCHEDULER_NAME,
      get_pretty_name,
      is_tpu_available,
      is_xpu_available,
      save,
  )
  
  
  if is_tpu_available(check_device=False):
         import torch_xla.core.xla_model as xm
  
  from .logging import get_logger
  from .state import PartialState
  
  
  lowerCamelCase     =      get_logger(__name__)
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				str			,   _A   :				List[dict]			,   _A   :				list			,   _A   :				list			,   _A   :				int			,   _A   :				GradScaler = None			,   ):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    for i, state in enumerate(_A							):
      a__						=F"""{MODEL_NAME}.bin""" if i == 0 else F"""{MODEL_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      save(_A			,   _A							)
      logger.info(F"""Model weights saved in {output_model_file}"""							)
    # Optimizer states
    for i, opt in enumerate(_A							):
      a__						=opt.state_dict()
      a__						=F"""{OPTIMIZER_NAME}.bin""" if i == 0 else F"""{OPTIMIZER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      save(_A			,   _A							)
      logger.info(F"""Optimizer state saved in {output_optimizer_file}"""							)
    # Scheduler states
    for i, scheduler in enumerate(_A							):
      a__						=scheduler.state_dict()
      a__						=F"""{SCHEDULER_NAME}.bin""" if i == 0 else F"""{SCHEDULER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      save(_A			,   _A							)
      logger.info(F"""Scheduler state saved in {output_scheduler_file}"""							)
    # GradScaler state
    if scaler is not None:
      a__						=scaler.state_dict()
      a__						=os.path.join(_A			,   _A							)
      torch.save(_A			,   _A							)
      logger.info(F"""Gradient scaler state saved in {output_scaler_file}"""							)
    # Random number generator states
    a__						={}
    a__						=F"""{RNG_STATE_NAME}_{process_index}.pkl"""
    a__						=random.getstate()
    a__						=np.random.get_state()
    a__						=torch.get_rng_state()
    if is_xpu_available():
      a__						=torch.xpu.get_rng_state_all()
    else:
      a__						=torch.cuda.get_rng_state_all()
    if is_tpu_available():
      a__						=xm.get_rng_state()
    a__						=os.path.join(_A			,   _A							)
    torch.save(_A			,   _A							)
    logger.info(F"""Random states saved in {output_states_file}"""							)
    return output_dir
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				Union[str, Any]			,   _A   :				int			,   _A   :				int			,   _A   :				Union[str, Any]			,   _A   :				Tuple			,   _A   :				Optional[int]=None			,   _A   :				List[Any]=None			,   **_A   :				Dict			,   ):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    if map_location not in [None, "cpu", "on_device"]:
      raise TypeError(
          '''Unsupported optimizer map location passed, please choose one of `None`, `\'cpu\'`, or `\'on_device\'`'''							)
    if map_location is None:
      a__						='''cpu'''
    elif map_location == "on_device":
      a__						=PartialState().device
    # Model states
    for i, model in enumerate(_A							):
      a__						=F"""{MODEL_NAME}.bin""" if i == 0 else F"""{MODEL_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      models[i].load_state_dict(torch.load(_A			,   map_location=_A							)			,   **_A							)
    logger.info('''All model weights loaded successfully'''							)
  
    # Optimizer states
    for i, opt in enumerate(_A							):
      a__						=F"""{OPTIMIZER_NAME}.bin""" if i == 0 else F"""{OPTIMIZER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      a__						=torch.load(_A			,   map_location=_A							)
      optimizers[i].load_state_dict(_A							)
    logger.info('''All optimizer states loaded successfully'''							)
  
    # Scheduler states
    for i, scheduler in enumerate(_A							):
      a__						=F"""{SCHEDULER_NAME}.bin""" if i == 0 else F"""{SCHEDULER_NAME}_{i}.bin"""
      a__						=os.path.join(_A			,   _A							)
      scheduler.load_state_dict(torch.load(_A							)							)
    logger.info('''All scheduler states loaded successfully'''							)
  
    # GradScaler state
    if scaler is not None:
      a__						=os.path.join(_A			,   _A							)
      scaler.load_state_dict(torch.load(_A							)							)
      logger.info('''GradScaler state loaded successfully'''							)
  
    # Random states
    try:
      a__						=torch.load(os.path.join(_A			,   F"""{RNG_STATE_NAME}_{process_index}.pkl"""							)							)
      random.setstate(states['''random_state''']							)
      np.random.set_state(states['''numpy_random_seed''']							)
      torch.set_rng_state(states['''torch_manual_seed''']							)
      if is_xpu_available():
        torch.xpu.set_rng_state_all(states['''torch_xpu_manual_seed''']							)
      else:
        torch.cuda.set_rng_state_all(states['''torch_cuda_manual_seed''']							)
      if is_tpu_available():
        xm.set_rng_state(states['''xm_seed''']							)
      logger.info('''All random states loaded successfully'''							)
    except Exception:
      logger.info('''Could not load random states'''							)
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				Optional[Any]			,   _A   :				Any			,   _A   :				int = 0							):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    a__						=Path(_A							) / F"""custom_checkpoint_{index}.pkl"""
    logger.info(F"""Saving the state of {get_pretty_name(_A							)} to {save_location}"""							)
    torch.save(obj.state_dict()			,   _A							)
  
  
  
  
  def     UpperCAmelCase__       (    _A   :				int			,   _A   :				Any			,   _A   :				int = 0							):
  
  
  
  
  
    '''simple docstring'''
  
  
  
  
  
  
  
    a__						=F"""{path}/custom_checkpoint_{index}.pkl"""
    logger.info(F"""Loading the state of {get_pretty_name(_A							)} from {load_location}"""							)
    obj.load_state_dict(torch.load(_A			,   map_location='''cpu'''							)							)
  