Пример #1
0
    def TestModel(self, datapath='', str_dataset='dev', data_count=32):
        '''
		测试检验模型效果
		'''
        data = DataSpeech(self.datapath, str_dataset)
        #data = self.data
        #data.LoadDataList(str_dataset)
        num_data = data.GetDataNum()  # 获取数据的数量
        if (data_count <= 0 or data_count >
                num_data):  # 当data_count为小于等于0或者大于测试数据量的值时,则使用全部数据来测试
            data_count = num_data

        try:
            gen = data.data_genetator(data_count)
            #for i in range(1):
            #	[X, y, input_length, label_length ], labels = gen
            #r = self._model.test_on_batch([X, y, input_length, label_length ], labels)
            r = self._model.evaluate_generator(generator=gen,
                                               steps=1,
                                               max_queue_size=data_count,
                                               workers=1,
                                               use_multiprocessing=False)
            print(r)
        except StopIteration:
            print('[Error] Model Test Error. please check data format.')
    def TrainModel(self,
                   datapath,
                   epoch=2,
                   save_step=1000,
                   filename='model_speech/LSTM_CNN_model'):
        '''
		训练模型
		参数:
			datapath: 数据保存的路径
			epoch: 迭代轮数
			save_step: 每多少步保存一次模型
			filename: 默认保存文件名,不含文件后缀名
		'''
        data = DataSpeech(datapath)
        data.LoadDataList('train')
        num_data = DataSpeech.GetDataNum()  # 获取数据的数量
        for epoch in range(epoch):  # 迭代轮数
            print('[running] train epoch %d .' % epoch)
            n_step = 0  # 迭代数据数
            while True:
                try:
                    print('[message] epoch %d . Have train datas %d+' %
                          (epoch, n_step * save_step))
                    # data_genetator是一个生成器函数
                    yielddatas = data.data_genetator(self.BATCH_SIZE)
                    self._model.fit_generator(yielddatas,
                                              save_step,
                                              nb_worker=2)
                    n_step += 1
                except StopIteration:
                    print('[error] generator error. please check data format.')
                    break

                self.SaveModel(comment='_e_' + str(epoch) + '_step_' +
                               str(n_step))
    def TestModel(self, datapath, str_dataset='dev'):
        '''
		测试检验模型效果
		'''
        data = DataSpeech(datapath)
        data.LoadDataList(str_dataset)
        num_data = DataSpeech.GetDataNum()  # 获取数据的数量
        try:
            gen = data.data_genetator(num_data)
            for i in range(1):
                X, y = gen
            r = self._model.test_on_batch(X, y)
            print(r)
        except StopIteration:
            print('[Error] Model Test Error. please check data format.')
Пример #4
0
    def TrainModel(self,
                   datapath='',
                   epoch=2,
                   batch_size=32,
                   save_step=1000,
                   filename='model_speech/speech_model'):
        '''
		训练模型
		参数:
			datapath: 数据保存的路径
			epoch: 迭代轮数
			save_step: 每多少步保存一次模型
			filename: 默认保存文件名,不含文件后缀名
		'''
        data = DataSpeech(self.datapath, 'train', LoadToMem=False)
        #data = self.data
        #data.LoadDataList()
        num_data = data.DataNum  # 获取数据的数量
        for epoch in range(epoch):  # 迭代轮数
            print('[running] train epoch %d .' % epoch)
            n_step = 0  # 迭代数据数
            while (n_step * save_step * batch_size < num_data):
                try:
                    print('[message] epoch %d . Have train datas %d * %d+' %
                          (epoch, batch_size, n_step * save_step))
                    # data_genetator是一个生成器函数
                    yielddatas = data.data_genetator(batch_size,
                                                     self.AUDIO_LENGTH)
                    #self._model.fit_generator(yielddatas, save_step, nb_worker=2)
                    self._model.fit_generator(yielddatas, save_step)
                    n_step += 1
                except StopIteration:
                    print('[error] generator error. please check data format.')
                    break

                self.SaveModel(comment='_e_' + str(epoch) + '_step_' +
                               str(n_step * save_step))
                self.TestModel(self.datapath,
                               str_dataset='train',
                               data_count=16)
                self.TestModel(self.datapath, str_dataset='dev', data_count=16)