class_docstr: Recurrent block, part of the update block.
  
  Takes the current hidden state and the concatenation of (motion encoder output, context) as input.
  Returns an updated hidden state.
class_docstr_tok: ["Recurrent","block",",","part","of","the","update","block",".","Takes","the","current","hidden","state","and","the","concatenation","of","(","motion","encoder","output",",","context",")","as","input",".","Returns","an","updated","hidden","state","."]
code: def forward(self, h, x):
      h = self.convgru1(h, x)
      h = self.convgru2(h, x)
      return h
  
imports: from typing import List, Optional
  import torch
  import torch.nn
  import torch.nn.functional
  from torch import Tensor
  from torch.nn.modules.batchnorm import BatchNorm2d
  from torch.nn.modules.instancenorm import InstanceNorm2d
  from torchvision.ops import Conv2dNormActivation
  from ...transforms._presets import OpticalFlow
  from ...utils import _log_api_usage_once
  from .._api import register_model, Weights, WeightsEnum
  from .._utils import handle_legacy_interface
  from ._utils import grid_sample, make_coords_grid, upsample_flow
label_desc: Use image node_id 2 for calling the RecurrentBlock obj's underlying member method code with example usage: obj.forward(h, x) and returns: h