Esempio n. 1
0
File: nlg.py Progetto: gzpbbd/DDQ
    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'])  # 模型超参数
Esempio n. 2
0
    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'])
Esempio n. 3
0
    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'])