code: def latent_resolution(self, img_size: int) -> int:
      shape = 1, self.in_channels, img_size, img_size
      with eval_context(self):
          net = self.encode(
              {INPUT_KEY: torch.zeros(*shape, device=get_device(self))}
          )
      return net.shape[2]
  
imports: import torch
  import torch.nn
  from torch import Tensor
  from typing import Any
  from typing import Dict
  from typing import Type
  from typing import Optional
  from cftool.misc import safe_execute
  from cftool.misc import check_requires
  from cftool.misc import WithRegister
  from cftool.types import tensor_dict_type
  from ....schema import _forward
  from ....schema import TrainerState
  from ....constants import INPUT_KEY
  from ....constants import LATENT_KEY
  from ....misc.toolkit import eval_context
  from ....misc.toolkit import get_device
  from ....modules.blocks import ImgToPatches
label_desc: Use image node_id 1 for calling the EncoderMixin obj's underlying member method code with example usage: obj.latent_resolution(img_size) and returns: net