class_docstr: Implements the transformations for BYOL[0].
  
  Input to this transform:
      PIL Image or Tensor.
  
  Output of this transform:
      List of Tensor of length 2.
  
  Applies the following augmentations by default:
      - Random resized crop
      - Random horizontal flip
      - Color jitter
      - Random gray scale
      - Gaussian blur
      - Solarization
      - ImageNet normalization
  
  Note that SimCLR v1 and v2 use similar augmentations. In detail, BYOL has
  asymmetric gaussian blur and solarization. Furthermore, BYOL has weaker
  color jitter compared to SimCLR.
  
  - [0]: Bootstrap Your Own Latent, 2020, https://arxiv.org/pdf/2006.07733.pdf
  
  Input to this transform:
      PIL Image or Tensor.
  
  Output of this transform:
      List of [tensor, tensor].
  
  Attributes:
      view_1_transform: The transform for the first view.
      view_2_transform: The transform for the second view.
class_docstr_tok: ["Implements","the","transformations","for","BYOL","[","0","]",".","Input","to","this","transform",":","PIL","Image","or","Tensor",".","Output","of","this","transform",":","List","of","Tensor","of","length","2",".","Applies","the","following","augmentations","by","default",":","-","Random","resized","crop","-","Random","horizontal","flip","-","Color","jitter","-","Random","gray","scale","-","Gaussian","blur","-","Solarization","-","ImageNet","normalization","Note","that","SimCLR","v1","and","v2","use","similar","augmentations",".","In","detail",",","BYOL","has","asymmetric","gaussian","blur","and","solarization",".","Furthermore",",","BYOL","has","weaker","color","jitter","compared","to","SimCLR",".","-","[","0","]",":","Bootstrap","Your","Own","Latent",",","2020",",","https",":","\/\/arxiv.org\/pdf\/2006.07733.pdf","Input","to","this","transform",":","PIL","Image","or","Tensor",".","Output","of","this","transform",":","List","of","[","tensor",",","tensor","]",".","Attributes",":","view_1_transform",":","The","transform","for","the","first","view",".","view_2_transform",":","The","transform","for","the","second","view","."]
code: def __init__(
      self,
      view_1_transform: Union[BYOLView1Transform, None] = None,
      view_2_transform: Union[BYOLView2Transform, None] = None,
  ):
      # We need to initialize the transforms here
      view_1_transform = view_1_transform or BYOLView1Transform()
      view_2_transform = view_2_transform or BYOLView2Transform()
      super().__init__(transforms=[view_1_transform, view_2_transform])
  
file_path: lightly/lightly/transforms/byol_transform.py
imports: from typing import Dict, List, Optional, Tuple, Union
  import torchvision.transforms
  from PIL.Image import Image
  from torch import Tensor
  from lightly.transforms.gaussian_blur import GaussianBlur
  from lightly.transforms.multi_view_transform import MultiViewTransform
  from lightly.transforms.rotation import random_rotation_transform
  from lightly.transforms.solarize import RandomSolarization
  from lightly.transforms.utils import IMAGENET_NORMALIZE
label_desc: Use image node_id 1 to create a new BYOLTransform object from inherited base classes: MultiViewTransform with example: obj = BYOLTransform(view_1_transform, view_2_transform)