code: def test_self_attention_sequential_masked():
      """test_self_attention_sequential"""
      in_dict = build_multi_input_dict(dims=[(2, 7, 10), (2, 7, 7)])
      in_dict["in_key_1"] = in_dict["in_key_1"] != 0
  
      self_attn_block = SelfAttentionSeqBlock(
          in_keys=["in_key_0", "in_key_1"],
          out_keys="self_attention",
          in_shapes=[(7, 10), (7, 7)],
          num_heads=10,
          dropout=0.0,
          bias=False,
          add_input_to_output=False,
      )
      str(self_attn_block)
      out_dict = self_attn_block(in_dict)
      assert self_attn_block.get_num_of_parameters() == 401
      assert len(out_dict.keys()) == len(self_attn_block.out_keys) == 1
      assert out_dict[self_attn_block.out_keys[0]].shape == (2, 7, 10)
  
imports: from maze.perception.blocks.general.self_attention_conv import SelfAttentionConvBlock
  from maze.perception.blocks.general.self_attention_seq import SelfAttentionSeqBlock
  from maze.test.perception.perception_test_utils import build_input_dict, build_multi_input_dict
label_desc: Use image node_id 3 for calling a global function with example usage: test_self_attention_sequential_masked() without return types