from __future__ import print_function
from model import LMF
from utils import total, load_mosi
from torch.utils.data import DataLoader, Dataset
from torch.autograd import Variable
from sklearn.metrics import accuracy_score, precision_recall_fscore_support, f1_score
import os
import argparse
import torch
import random
import torch.nn as nn
import torch.optim as optim
import numpy as np
import csv
defdisplay(mae, corr, multi_acc, bi_acc, f1):print("MAE on test set is {}".format(mae))print("Correlation w.r.t human evaluation on test set is {}".format(corr))print("Multiclass accuracy on test set is {}".format(multi_acc))print("Binary accuracy on test set is {}".format(bi_acc))print("F1-score on test set is {}".format(f1))defmain(options):
DTYPE = torch.FloatTensor
# parse the input args
run_id = options['run_id']
epochs = options['epochs']
data_path = options['data_path']
model_path = options['model_path']
output_path = options['output_path']
signiture = options['signiture']
patience = options['patience']
output_dim = options['output_dim']print("Training initializing... Setup ID is: {}".format(run_id))# prepare the paths for storing models and outputs
model_path = os.path.join(
model_path,"model_{}_{}.pt".format(signiture, run_id))
output_path = os.path.join(
output_path,"results_{}_{}.csv".format(signiture, run_id))print("Temp location for models: {}".format(model_path))print("Grid search results are in: {}".format(output_path))
os.makedirs(os.path.dirname(output_path), exist_ok=True)
os.makedirs(os.path.dirname(model_path), exist_ok=True)
train_set, valid_set, test_set, input_dims = load_mosi(data_path)
params =dict()
params['audio_hidden']=[4,8,16]
params['video_hidden']=[4,8,16]
params['text_hidden']=[64,128,256]
params['audio_dropout']=[0,0.1,0.15,0.2,0.3,0.5]
params['video_dropout']=[0,0.1,0.15,0.2,0.3,0.5]
params['text_dropout']=[0,0.1,0.15,0.2,0.3,0.5]
params['factor_learning_rate']=[0.0003,0.0005,0.001,0.003]
params['learning_rate']=[0.0003,0.0005,0.001,0.003]
params['rank']=[1