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
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