code: def test_lstm_synthetic_reward(self):
      state_dim = 10
      action_dim = 2
      last_layer_activation = "leaky_relu"
      net = SequenceSyntheticRewardNet(
          state_dim=state_dim,
          action_dim=action_dim,
          lstm_hidden_size=128,
          lstm_num_layers=2,
          lstm_bidirectional=True,
          last_layer_activation=last_layer_activation,
      )
      reward_net = SyntheticRewardNet(net)
      lstm = reward_net.export_mlp().lstm
      assert lstm.bidirectional
      assert lstm.input_size == 12
      assert lstm.hidden_size == 128
      assert lstm.num_layers == 2
  
      dnn = reward_net.export_mlp().fc_out
      assert dnn.in_features == 128 * 2
      assert dnn.out_features == 1
  
      output_activation = reward_net.export_mlp().output_activation
      assert output_activation._get_name() == "LeakyReLU"
  
file_path: ReAgent/reagent/test/models/test_synthetic_reward_net.py
imports: import logging
  import unittest
  import torch
  from reagent.core import parameters
  from reagent.models.synthetic_reward import _gen_mask, NGramConvolutionalNetwork, NGramFullyConnectedNetwork, SequenceSyntheticRewardNet, SingleStepSyntheticRewardNet, SyntheticRewardNet, TransformerSyntheticRewardNet
  from reagent.models.synthetic_reward_sparse_arch import SingleStepSyntheticSparseArchRewardNet, SyntheticRewardSparseArchNet
  from torchrec import EmbeddingBagCollection, EmbeddingBagConfig
label_desc: Use image node_id 4 for calling the TestSyntheticReward obj's underlying member method code with example usage: obj.test_lstm_synthetic_reward() without return types