class_docstr: The ``VISSLAdapter`` is an :class:`~flash.core.adapter.Adapter` for integrating with VISSL.
  
  Also inherits from ``AdaptVISSLHooks`` to support VISSL hooks.
class_docstr_tok: ["The","``","VISSLAdapter","``","is","an",":","class",":","`","~flash.core.adapter.Adapter","`","for","integrating","with","VISSL",".","Also","inherits","from","``","AdaptVISSLHooks","``","to","support","VISSL","hooks","."]
code: def ssl_forward(self, batch) -> Any:
      model_output = self.vissl_base_model(batch)
  
      # vissl-specific
      if len(model_output) == 1:
          model_output = model_output[0]
  
      return model_output
  
imports: from typing import Any, List, Union
  import torch
  import torch.nn
  from flash.core.adapter import Adapter
  from flash.core.data.io.input import DataKeys
  from flash.core.model import Task
  from flash.core.utilities.imports import _VISSL_AVAILABLE
  from flash.core.utilities.stability import beta
  from flash.image.embedding.vissl.hooks import AdaptVISSLHooks
label_desc: Use image node_id 5 for calling the VISSLAdapter obj's underlying member method code with example usage: obj.ssl_forward(batch) and returns: model_output