def load_nlg_model(self, model_path): """ load the trained NLG model """ model_params = pickle.load(open(model_path)) hidden_size = model_params['model']['Wd'].shape[0] output_size = model_params['model']['Wd'].shape[1] if model_params['params']['model'] == 'lstm_tanh': # lstm_tanh diaact_input_size = model_params['model']['Wah'].shape[0] input_size = model_params['model']['WLSTM'].shape[ 0] - hidden_size - 1 rnnmodel = lstm_decoder_tanh(diaact_input_size, input_size, hidden_size, output_size) rnnmodel.model = copy.deepcopy( model_params['model']) # rnn模型的w、b等trainable参数 model_params['params']['beam_size'] = dialog_config.nlg_beam_size self.model = rnnmodel self.word_dict = copy.deepcopy(model_params['word_dict']) self.template_word_dict = copy.deepcopy( model_params['template_word_dict']) self.slot_dict = copy.deepcopy( model_params['slot_dict']) # 与 slot_set.txt 相同 self.act_dict = copy.deepcopy( model_params['act_dict']) # 与 dia_acts.txt 相同 self.inverse_word_dict = { self.template_word_dict[k]: k for k in self.template_word_dict.keys() } self.params = copy.deepcopy(model_params['params']) # 模型超参数
def load_nlg_model(self, model_path): """ load the trained NLG model """ with open(model_path, "rb") as f: model_params = pickle.load(f, encoding="latin1") # model_params = pickle.load(open(model_path, 'rb')) # hidden_size:100 output_size:1047 hidden_size = model_params['model']['Wd'].shape[0] output_size = model_params['model']['Wd'].shape[1] if model_params['params']['model'] == 'lstm_tanh': # lstm_tanh diaact_input_size = model_params['model']['Wah'].shape[0] input_size = model_params['model']['WLSTM'].shape[ 0] - hidden_size - 1 rnnmodel = lstm_decoder_tanh(diaact_input_size, input_size, hidden_size, output_size) rnnmodel.model = copy.deepcopy(model_params['model']) model_params['params']['beam_size'] = dialog_config.nlg_beam_size self.model = rnnmodel self.word_dict = copy.deepcopy(model_params['word_dict']) self.template_word_dict = copy.deepcopy( model_params['template_word_dict']) self.slot_dict = copy.deepcopy(model_params['slot_dict']) self.act_dict = copy.deepcopy(model_params['act_dict']) self.inverse_word_dict = { self.template_word_dict[k]: k for k in self.template_word_dict.keys() } self.params = copy.deepcopy(model_params['params'])
def load_nlg_model(self, model_path): """ load the trained NLG model """ import sys if 'win' in sys.platform: model_params = pickle.load(open(model_path, 'r')) else: model_params = pickle.load(open(model_path, 'rb')) hidden_size = model_params['model']['Wd'].shape[0] output_size = model_params['model']['Wd'].shape[1] if model_params['params']['model'] == 'lstm_tanh': # lstm_tanh diaact_input_size = model_params['model']['Wah'].shape[0] input_size = model_params['model']['WLSTM'].shape[0] - hidden_size - 1 rnnmodel = lstm_decoder_tanh(diaact_input_size, input_size, hidden_size, output_size) rnnmodel.model = copy.deepcopy(model_params['model']) model_params['params']['beam_size'] = dialog_config.nlg_beam_size self.model = rnnmodel self.word_dict = copy.deepcopy(model_params['word_dict']) self.template_word_dict = copy.deepcopy(model_params['template_word_dict']) self.slot_dict = copy.deepcopy(model_params['slot_dict']) self.act_dict = copy.deepcopy(model_params['act_dict']) self.inverse_word_dict = {self.template_word_dict[k]:k for k in self.template_word_dict.keys()} self.params = copy.deepcopy(model_params['params'])