code: def forward(
      self, queries, keys, query_pe, key_pe
  ) -> Tuple[Tensor, Tensor]:
      if self.skip_first_layer_pe:
          queries = self.self_attn(q=queries, k=queries, v=queries)
      else:
          q = queries + query_pe
          attn_out = self.self_attn(q=q, k=q, v=queries)
          queries = queries + attn_out
      queries = self.norm1(queries)
      q = queries + query_pe
      k = keys + key_pe
      attn_out = self.cross_attn_token_to_image(q=q, k=k, v=keys)
      queries = queries + attn_out
      queries = self.norm2(queries)
      mlp_out = self.mlp(queries)
      queries = queries + mlp_out
      queries = self.norm3(queries)
      q = queries + query_pe
      k = keys + key_pe
      attn_out = self.cross_attn_image_to_token(q=k, k=q, v=queries)
      keys = keys + attn_out
      keys = self.norm4(keys)
      return queries, keys
  
file_path: PaddleSeg/contrib/SegmentAnything/segment_anything/modeling/transformer.py
imports: import paddle
  from paddle import Tensor, nn
  import paddle.nn.functional
  import math
  from typing import Tuple, Type
  from common import MLPBlock
label_desc: Use image node_id 2 for calling the TwoWayAttentionBlock obj's underlying member method code with example usage: obj.forward(queries, keys, query_pe, key_pe) and returns: queries,  keys