Пример #1
0
def inject_retrieval_code(net_dict, rec_layer_name, layers, dropout):
  """
  Injects some retrieval code into the config

  :param dict[str] net_dict:
  :param str rec_layer_name: name of rec layer
  :param list[str] layers: layers in rec layer to extract
  :param float|None dropout: to override, if given
  :return: net_dict
  :rtype: dict[str]
  """
  assert config is not None
  assert rec_layer_name in net_dict
  assert net_dict[rec_layer_name]["class"] == "rec"
  for l in layers:
    assert l in net_dict[rec_layer_name]['unit'], "layer %r not found" % l

  new_layers_descr = net_dict.copy()  # actually better would be deepcopy...
  for sub_layer in layers:
    # assert that sub_layer inside subnet is a output-layer
    new_layers_descr[rec_layer_name]['unit'][sub_layer]["is_output_layer"] = True

  if dropout is not None:
    deep_update_dict_values(net_dict, "dropout", dropout)
    deep_update_dict_values(net_dict, "rec_weight_dropout", dropout)
  return new_layers_descr
Пример #2
0
def inject_retrieval_code(net_dict, rec_layer_name, layers, dropout, args):
    """
  Injects some retrieval code into the config

  :param dict[str] net_dict:
  :param str rec_layer_name: name of rec layer
  :param list[str] layers: layers in rec layer to extract
  :param float|None dropout: to override, if given
  :return: net_dict
  :rtype: dict[str]
  """
    assert config is not None
    assert rec_layer_name in net_dict
    assert net_dict[rec_layer_name]["class"] == "rec"

    new_layers_descr = net_dict.copy()  # actually better would be deepcopy...

    if args.instead_save_encoder_decoder:
        new_layers_descr["encoder"]["is_output_layer"] = True
        new_layers_descr[rec_layer_name]['unit']["decoder"][
            "is_output_layer"] = True
    else:
        for l in layers:
            assert l in net_dict[rec_layer_name][
                'unit'], "layer %r not found" % l

        for sub_layer in layers:
            # assert that sub_layer inside subnet is a output-layer
            new_layers_descr[rec_layer_name]['unit'][sub_layer][
                "is_output_layer"] = True

        if dropout is not None:
            deep_update_dict_values(net_dict, "dropout", dropout)
            deep_update_dict_values(net_dict, "rec_weight_dropout", dropout)

        if args.hmm_fac_fo:
            # hmm fac layer
            new_layers_descr[rec_layer_name]['unit']["output_prob"][
                "attention_location"] = args.dump_dir
            new_layers_descr[rec_layer_name][
                "optimize_move_layers_out"] = False

        if args.encoder_sa:
            # Encoder self attention
            for l in net_dict:
                if "enc" in l:
                    if net_dict[l]["class"] == "self_attention":
                        net_dict[l]["attention_location"] = args.dump_dir

    return new_layers_descr