class_docstr: The Learned Perceptual Image Patch Similarity (`LPIPS_`) calculates perceptual similarity between two images.
  
  LPIPS essentially computes the similarity between the activations of two image patches for some pre-defined network.
  This measure has been shown to match human perception well. A low LPIPS score means that image patches are
  perceptual similar.
  
  Both input image patches are expected to have shape ``(N, 3, H, W)``. The minimum size of `H, W` depends on the
  chosen backbone (see `net_type` arg).
  
  .. note:: using this metrics requires you to have ``torchvision`` package installed. Either install as
      ``pip install torchmetrics[image]`` or ``pip install torchvision``.
  
  .. note:: this metric is not scriptable when using ``torch<1.8``. Please update your pytorch installation
      if this is a issue.
  
  As input to ``forward`` and ``update`` the metric accepts the following input
  
  - ``img1`` (:class:`~torch.Tensor`): tensor with images of shape ``(N, 3, H, W)``
  - ``img2`` (:class:`~torch.Tensor`): tensor with images of shape ``(N, 3, H, W)``
  
  As output of `forward` and `compute` the metric returns the following output
  
  - ``lpips`` (:class:`~torch.Tensor`): returns float scalar tensor with average LPIPS value over samples
  
  Args:
      net_type: str indicating backbone network type to use. Choose between `'alex'`, `'vgg'` or `'squeeze'`
      reduction: str indicating how to reduce over the batch dimension. Choose between `'sum'` or `'mean'`.
      normalize: by default this is ``False`` meaning that the input is expected to be in the [-1,1] range. If set
          to ``True`` will instead expect input to be in the ``[0,1]`` range.
      kwargs: Additional keyword arguments, see :ref:`Metric kwargs` for more info.
  
  Raises:
      ModuleNotFoundError:
          If ``torchvision`` package is not installed
      ValueError:
          If ``net_type`` is not one of ``"vgg"``, ``"alex"`` or ``"squeeze"``
      ValueError:
          If ``reduction`` is not one of ``"mean"`` or ``"sum"``
  
  Example:
      >>> import torch
      >>> _ = torch.manual_seed(123)
      >>> from torchmetrics.image.lpip import LearnedPerceptualImagePatchSimilarity
      >>> lpips = LearnedPerceptualImagePatchSimilarity(net_type='squeeze')
      >>> # LPIPS needs the images to be in the [-1, 1] range.
      >>> img1 = (torch.rand(10, 3, 100, 100) * 2) - 1
      >>> img2 = (torch.rand(10, 3, 100, 100) * 2) - 1
      >>> lpips(img1, img2)
      tensor(0.1046, grad_fn=<SqueezeBackward0>)
class_docstr_tok: ["The","Learned","Perceptual","Image","Patch","Similarity","(","`","LPIPS_","`",")","calculates","perceptual","similarity","between","two","images",".","LPIPS","essentially","computes","the","similarity","between","the","activations","of","two","image","patches","for","some","pre-defined","network",".","This","measure","has","been","shown","to","match","human","perception","well",".","A","low","LPIPS","score","means","that","image","patches","are","perceptual","similar",".","Both","input","image","patches","are","expected","to","have","shape","``","(","N",",","3",",","H",",","W",")","``",".","The","minimum","size","of","`","H",",","W","`","depends","on","the","chosen","backbone","(","see","`","net_type","`","arg",")",".","..","note",":",":","using","this","metrics","requires","you","to","have","``","torchvision","``","package","installed",".","Either","install","as","``","pip","install","torchmetrics","[","image","]","``","or","``","pip","install","torchvision","``",".","..","note",":",":","this","metric","is","not","scriptable","when","using","``","torch","<","1.8","``",".","Please","update","your","pytorch","installation","if","this","is","a","issue",".","As","input","to","``","forward","``","and","``","update","``","the","metric","accepts","the","following","input","-","``","img1","``","(",":","class",":","`","~torch.Tensor","`",")",":","tensor","with","images","of","shape","``","(","N",",","3",",","H",",","W",")","``","-","``","img2","``","(",":","class",":","`","~torch.Tensor","`",")",":","tensor","with","images","of","shape","``","(","N",",","3",",","H",",","W",")","``","As","output","of","`","forward","`","and","`","compute","`","the","metric","returns","the","following","output","-","``","lpips","``","(",":","class",":","`","~torch.Tensor","`",")",":","returns","float","scalar","tensor","with","average","LPIPS","value","over","samples","Args",":","net_type",":","str","indicating","backbone","network","type","to","use",".","Choose","between","`","'alex","'","`",",","`","'vgg","'","`","or","`","'squeeze","'","`","reduction",":","str","indicating","how","to","reduce","over","the","batch","dimension",".","Choose","between","`","'sum","'","`","or","`","'mean","'","`",".","normalize",":","by","default","this","is","``","False","``","meaning","that","the","input","is","expected","to","be","in","the","[","-1,1","]","range",".","If","set","to","``","True","``","will","instead","expect","input","to","be","in","the","``","[","0,1","]","``","range",".","kwargs",":","Additional","keyword","arguments",",","see",":","ref",":","`","Metric","kwargs","`","for","more","info",".","Raises",":","ModuleNotFoundError",":","If","``","torchvision","``","package","is","not","installed","ValueError",":","If","``","net_type","``","is","not","one","of","``","``","vgg","''","``",",","``","``","alex","''","``","or","``","``","squeeze","''","``","ValueError",":","If","``","reduction","``","is","not","one","of","``","``","mean","''","``","or","``","``","sum","''","``","Example",":",">",">",">","import","torch",">",">",">","_","=","torch.manual_seed","(","123",")",">",">",">","from","torchmetrics.image.lpip","import","LearnedPerceptualImagePatchSimilarity",">",">",">","lpips","=","LearnedPerceptualImagePatchSimilarity","(","net_type='squeeze","'",")",">",">",">","#","LPIPS","needs","the","images","to","be","in","the","[","-1",",","1","]","range",".",">",">",">","img1","=","(","torch.rand","(","10",",","3",",","100",",","100",")","*","2",")","-","1",">",">",">","img2","=","(","torch.rand","(","10",",","3",",","100",",","100",")","*","2",")","-","1",">",">",">","lpips","(","img1",",","img2",")","tensor","(","0.1046",",","grad_fn=","<","SqueezeBackward0",">",")"]
docstr: Update internal states with lpips score.
docstr_tok: ["Update","internal","states","with","lpips","score","."]
code: def update(self, img1: Tensor, img2: Tensor) -> None:
      """Update internal states with lpips score."""
      loss, total = _lpips_update(
          img1, img2, net=self.net, normalize=self.normalize
      )
      self.sum_scores += loss.sum()
      self.total += total
  
file_path: torchmetrics/src/torchmetrics/image/lpip.py
imports: from typing import Any, ClassVar, List, Optional, Sequence, Union
  import torch
  from torch import Tensor
  from typing_extensions import Literal
  from torchmetrics.functional.image.lpips import _LPIPS, _lpips_compute, _lpips_update, _NoTrainLpips
  from torchmetrics.metric import Metric
  from torchmetrics.utilities.checks import _SKIP_SLOW_DOCTEST, _try_proceed_with_timeout
  from torchmetrics.utilities.imports import _MATPLOTLIB_AVAILABLE, _TORCHVISION_AVAILABLE
  from torchmetrics.utilities.plot import _AX_TYPE, _PLOT_OUT_TYPE
label_desc: Use image node_id 2 for calling the LearnedPerceptualImagePatchSimilarity obj's underlying member method code with example usage: obj.update(img1, img2) without return types