class_docstr: Class object that fetches keras' VGG19 model trained on the imagenet dataset
  and declares <layers_to_extract> as output layers. Used as feature extractor
  for the perceptual loss function.
  
  Args:
      layers_to_extract: list of layers to be declared as output layers.
      patch_size: integer, defines the size of the input (patch_size x patch_size).
  
  Attributes:
      loss_model: multi-output vgg architecture with <layers_to_extract> as output layers.
class_docstr_tok: ["Class","object","that","fetches","keras","'","VGG19","model","trained","on","the","imagenet","dataset","and","declares","<","layers_to_extract",">","as","output","layers",".","Used","as","feature","extractor","for","the","perceptual","loss","function",".","Args",":","layers_to_extract",":","list","of","layers","to","be","declared","as","output","layers",".","patch_size",":","integer",",","defines","the","size","of","the","input","(","patch_size","x","patch_size",")",".","Attributes",":","loss_model",":","multi-output","vgg","architecture","with","<","layers_to_extract",">","as","output","layers","."]
code: def __init__(self, patch_size, layers_to_extract):
      self.patch_size = patch_size
      self.input_shape = (patch_size,) * 2 + (3,)
      self.layers_to_extract = layers_to_extract
      self.logger = get_logger(__name__)
  
      if len(self.layers_to_extract) > 0:
          self._cut_vgg()
      else:
          self.logger.error(
              "Invalid VGG instantiation: extracted layer must be > 0"
          )
          raise ValueError(
              "Invalid VGG instantiation: extracted layer must be > 0"
          )
  
imports: from tensorflow.keras.models import Model
  from tensorflow.keras.applications.vgg19 import VGG19
  from ISR.utils.logger import get_logger
label_desc: Use image node_id 1 to create a new Cut_VGG19 object  with example: obj = Cut_VGG19(patch_size, layers_to_extract)