def elm_predict(model, X_train, X_test, X_valid, multiTasks, unweighted, stl, dictForLabelsTrain, dictForLabelsTest, dictForLabelsValid, hidden_num=50, main_task_id=-1, elm_save_path='./model/elm.ckpt', dataset='test'): sess = tf.Session() print('elm high level feature generating') pred_train = model.predict([X_train]) feat_train = high_level_feature_mtl(pred_train, stl=stl, main_task_id=main_task_id) print('high level feature dim for train: ', feat_train.shape[1]) #add total features add_high_feature(feat_train, multiTasks, dictForLabelsTrain, total_high_pred_train) pred_test = model.predict([X_test]) feat_test = high_level_feature_mtl(pred_test, stl=stl, main_task_id=main_task_id) #add total features add_high_feature(feat_test, multiTasks, dictForLabelsTest, total_high_pred_test) print('high level feature dim for test: ', feat_test.shape[1]) if len(X_valid) != 0: pred_valid = model.predict([X_valid]) feat_valid = high_level_feature_mtl(pred_valid, stl=stl, main_task_id=main_task_id) scores = [] for task, classes, idx in multiTasks: elm = ELM(sess, feat_train.shape[0], feat_train.shape[1], hidden_num, dictForLabelsTrain[task].shape[1], task=str(task)) print('elm training') elm.feed(feat_train, dictForLabelsTrain[task]) elm.save(elm_save_path + "." + str(task) + ".elm.ckpt") print('elm testing') labels = dictForLabelsTest[task] if unweighted: preds = elm.test(feat_test) scores.append(unweighted_recall(preds, labels, task, dataset)) else: acc = elm.test(feat_test, labels) scores.append(acc) if len(X_valid) != 0: print('elm validating') labels = dictForLabelsValid[task] if unweighted: preds = elm.test(feat_valid) scores.append(unweighted_recall(preds, labels, task, dataset)) else: acc = elm.test(feat_valid, labels) scores.append(acc) return scores
portion_over_threshold = portion_over_threshold / max( training_pred_emotion_sequence.shape[1], 1) high_lvl_features[index] = np.concatenate( (max_, min_, mean, portion_over_threshold), axis=1) high_lvl_labels[index] = labels[2] return high_lvl_features, high_lvl_labels training_high_lvl_features, training_labels = extract_high_level_features( training_sequence) test_high_lvl_features, testing_labels = extract_high_level_features( test_sequence) sess = tf.Session() elm = ELM(sess, *training_high_lvl_features.shape, hidden_num=50, output_len=4) elm.feed(training_high_lvl_features, training_labels) predictions = elm.test(test_high_lvl_features) predictions = np.argmax(predictions, axis=1) testing_labels = np.argmax(testing_labels, axis=1) cm = confusion_matrix(testing_labels, predictions, labels=np.array([0, 1, 2, 3])) with open(args.save_dir + f'/{args.prefix}_elm_confussion_matrix.txt', mode='w') as f: f.write(str(cm)) with open(args.save_dir + f'/{args.prefix}_elm_confussion_matrix.pkl', mode='wb') as f: pickle.dump(cm, f, protocol=4)