Esempio n. 1
0
    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()
Esempio n. 2
0
    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   
Esempio n. 3
0
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