def __init__(self, model_file='./model.h5', elm_model_files=None, feat_path='./temp.csv', context_len=5, max_time_steps=300, elm_hidden_num=50, stl=True, elm_main_task_id=-1, sr=16000, tasks='arousal:2,valence:2'): self.stl = stl self.model = self.model = keras.models.load_model(model_file) self.elm_model_files = elm_model_files self.sess = tf.Session() self.elm_model = [] self.tasks = [] self.tasks_names = [] self.total_high_level_feat = 0 #setting multi-task for task in tasks.split(","): print("task: ", task) task_n_class = task.split(':') self.tasks.append(int(task_n_class[1])) self.tasks_names.append(task_n_class[0]) self.total_high_level_feat = self.total_high_level_feat + int( task_n_class[1]) #seeting an elm model for a post-classifier if self.elm_model_files != None: print("elm model is loaded") elm_tasks = elm_model_files.split(',') if len(elm_tasks) == len(self.tasks): print("#tasks: ", len(self.tasks)) for i in range(0, len(self.tasks)): elm_model_task = ELM(self.sess, 1, self.total_high_level_feat * 4, elm_hidden_num, self.tasks[i], task=self.tasks_names[i]) elm_path = elm_tasks[i] elm_model_task.load(elm_path) self.elm_model.append(elm_model_task) self.elm_hidden_num = elm_hidden_num self.elm_main_task_id = elm_main_task_id else: print("mismatch between tasks and elm models") exit() self.sr = sr self.feat_path = feat_path self.context_len = context_len self.max_time_steps = max_time_steps self.model.summary()
def __init__(self, model_file = './model.h5', elm_model_files = None, feat_path = './temp.csv', context_len = 5, max_time_steps = 300, elm_hidden_num = 50, stl = True, elm_main_task_id = -1, sr = 16000, tasks = 'arousal:2,valence:2', min_max = None, seq2seq = False): self.stl = stl self.model = self.model = keras.models.load_model(model_file, custom_objects={'Conv3DHighway': Conv3DHighway, 'Conv2DHighway': Conv2DHighway, 'Conv1DHighway': Conv1DHighway, 'Highway': Highway, 'w_categorical_crossentropy': w_categorical_crossentropy, 'categorical_focal_loss': categorical_focal_loss, 'f1': f1, 'precision': precision, 'recall': recall}) self.seq2seq = seq2seq self.elm_model_files = elm_model_files self.sess = tf.Session() self.elm_model = [] self.tasks = [] self.tasks_names = [] self.total_high_level_feat = 0 self.feat_ext = FeatExt(min_max) #print("Plotting model") #config = self.model.get_config() #print(config) #plot_model(self.model, to_file='model.png', show_shapes=True) #setting multi-task for task in tasks.split(","): print("task: ", task) task_n_class = task.split(':') self.tasks.append(int(task_n_class[1])) self.tasks_names.append(task_n_class[0]) self.total_high_level_feat = self.total_high_level_feat + int(task_n_class[1]) #seeting an elm model for a post-classifier if self.elm_model_files != None: print("elm model is loaded") elm_tasks = elm_model_files.split(',') if len(elm_tasks) == len(self.tasks): print("#tasks: ", len(self.tasks)) for i in range(0, len(self.tasks)): elm_model_task = ELM(self.sess, 1, self.total_high_level_feat * 4, elm_hidden_num, self.tasks[i], task = self.tasks_names[i]) elm_path = elm_tasks[i] elm_model_task.load(elm_path) self.elm_model.append(elm_model_task) self.elm_hidden_num = elm_hidden_num self.elm_main_task_id = elm_main_task_id else: print("mismatch between tasks and elm models") exit() self.sr = sr self.feat_path = feat_path self.context_len = context_len self.max_time_steps = max_time_steps
def elm_load_predict(model, X_test, multiTasks, unweighted, stl, dictForLabelsTest, hidden_num=50, main_task_id=-1, elm_load_path='./model/elm.ckpt', dataset='test'): sess = tf.Session() print('elm high level feature generating') pred_test = model.predict([X_test]) feat_test = high_level_feature_mtl(pred_test, stl=stl, main_task_id=main_task_id) print('high level feature dim: ', feat_test.shape[1]) scores = [] for task, classes, idx in multiTasks: elm = ELM(sess, feat_test.shape[0], feat_test.shape[1], hidden_num, dictForLabelsTest[task].shape[1]) print('elm loading') elm.load(elm_load_path) print('elm testing') if unweighted: labels = dictForLabelsTest[task] preds = elm.test(feat_test) scores.append(unweighted_recall(preds, labels, task, dataset)) else: acc = elm.test(feat_test, labels) scores.append(acc) return scores