code: def embed(self, state, tgt_in_seq):
      batch_size = state.shape[0]
  
      # candidate_embed: batch_size, src_seq_len + 1, dim_model/2
      candidate_embed = self.candidate_embedder(tgt_in_seq)
      # state_embed: batch_size, dim_model/2
      state_embed = self.state_embedder(state)
      # transform state_embed into shape: batch_size, src_seq_len, dim_model/2
      state_embed = state_embed.repeat(
          1, self.max_src_seq_len + 1
      ).reshape(batch_size, self.max_src_seq_len + 1, -1)
  
      # Input at each encoder step is actually concatenation of state_embed
      # and candidate embed.
      # shape: batch_size, src_seq_len + 1, dim_model
      tgt_in_embed = torch.cat((state_embed, candidate_embed), dim=2)
      return tgt_in_embed
  
imports: import copy
  import logging
  from typing import List
  import torch
  import torch.nn
  import torch.nn.functional
  from reagent.core import types
  from reagent.core.torch_utils import gather
  from reagent.model_utils.seq2slate_utils import subsequent_mask
  from reagent.models.base import ModelBase
  from reagent.models.seq2slate import Decoder, DecoderLayer, Embedder, Encoder, EncoderLayer, MultiHeadedAttention, PositionalEncoding, PositionwiseFeedForward
label_desc: Use image node_id 3 for calling the Seq2SlateGRURewardNet obj's underlying member method code with example usage: obj.embed(state, tgt_in_seq) and returns: tgt_in_embed