code: def test_unroll_lstm(
      self, input_tensor, dim_out, outputs_with_grads, **kwargs
  ):
      lstms = [
          _prepare_rnn(
              *input_tensor.shape,
              create_rnn=rnn_cell.LSTM,
              outputs_with_grads=outputs_with_grads,
              T=T,
              two_d_initial_states=False,
              dim_out=dim_out,
              **kwargs,
          )
          for T in [input_tensor.shape[0], None]
      ]
      outputs, nets, inputs = zip(*lstms)
      workspace.FeedBlob(inputs[0][-1], input_tensor)
  
      assert inputs[0] == inputs[1]
      gradient_checker.NetGradientChecker.CompareNets(
          nets,
          outputs,
          outputs_with_grads,
          inputs_with_grads=inputs[0],
      )
  
imports: from caffe2.python import core, gradient_checker, rnn_cell, workspace, scope, utils
  from caffe2.python.attention import AttentionType
  from caffe2.python.model_helper import ModelHelper, ExtractPredictorNet
  from caffe2.python.rnn.rnn_cell_test_util import sigmoid, tanh, _prepare_rnn
  from caffe2.proto import caffe2_pb2
  import caffe2.python.hypothesis_test_util
  from functools import partial
  from hypothesis import assume, given
  from hypothesis import settings
  import hypothesis.strategies
  import numpy
  import unittest
label_desc: Use image node_id 2 for calling the RNNCellTest obj's underlying member method code with example usage: obj.test_unroll_lstm(input_tensor, dim_out, outputs_with_grads) without return types