def __init__(self, HPARAMS): super().__init__() # HPARAMS self.save_hyperparameters() self.model = Wav2VecLSTM(HPARAMS['model_hidden_size']) self.classification_criterion = MSE() self.regression_criterion = MSE() self.mae_criterion = MAE() self.rmse_criterion = RMSELoss() self.accuracy = Accuracy() self.alpha = HPARAMS['model_alpha'] self.beta = HPARAMS['model_beta'] self.gamma = HPARAMS['model_gamma'] self.lr = HPARAMS['training_lr'] self.csv_path = HPARAMS['speaker_csv_path'] self.df = pd.read_csv(self.csv_path, sep=' ') self.h_mean = self.df['Height'].mean() self.h_std = self.df['Height'].std() self.a_mean = self.df['Age'].mean() self.a_std = self.df['Age'].std() print(f"Model Details: #Params = {self.count_total_parameters()}\t#Trainable Params = {self.count_trainable_parameters()}")
def __init__(self, HPARAMS): super().__init__() # HPARAMS self.save_hyperparameters() self.models = { 'wav2vecLSTMAttn': Wav2VecLSTM, 'spectralCNNLSTM': SpectralCNNLSTM, 'MultiScale': SpectralMultiScale, } self.model = self.models[HPARAMS['model_type']](HPARAMS['hidden_size']) self.classification_criterion = MSE() self.regression_criterion = MSE() self.mae_criterion = MAE() self.rmse_criterion = RMSELoss() self.accuracy = Accuracy() self.alpha = HPARAMS['alpha'] self.beta = HPARAMS['beta'] self.gamma = HPARAMS['gamma'] self.lr = HPARAMS['lr'] self.csv_path = HPARAMS['speaker_csv_path'] self.df = pd.read_csv(self.csv_path) self.h_mean = self.df['height'].mean() self.h_std = self.df['height'].std() self.a_mean = self.df['age'].mean() self.a_std = self.df['age'].std() print( f"Model Details: #Params = {self.count_total_parameters()}\t#Trainable Params = {self.count_trainable_parameters()}" )
def inference(model, loader, label_name, logger, log_path, save_model_file): m, M = (144.78, 203.2) model.load_state_dict(torch.load(log_path + save_model_file)) true_labels = [] predictions = [] model.eval() # evaluation mode with torch.no_grad(): # no gradients/back propagation for evaluation for batch in loader: batch_x, batch_y = batch batch_x, batch_y = batch_x.float().to(device), batch_y.float().to( device) y_hat = model(batch_x) # forward pass throough model predictions += y_hat.cpu().detach().view(-1) true_labels += batch_y.cpu().detach().view(-1) prediction = torch.Tensor(predictions) * (M - m) + m label = torch.Tensor(true_labels) * (M - m) + m mse = MSE()(prediction, label) mae = MAE()(prediction, label) rmse = RMSE()(prediction, label) print(f'\n{label_name} Dataset :\tMSE : {mse}\tMAE : {mae}\tRMSE: {rmse}') logger.info( f'\n{label_name} Dataset :\tMSE : {mse}\tMAE : {mae}\tRMSE: {rmse}')
def test_mse(pred, target, exp): mse = MSE() assert mse.name == 'mse' score = mse(pred=torch.tensor(pred), target=torch.tensor(target)) assert isinstance(score, torch.Tensor) assert score.item() == exp
def test_mse(): mse = MSE() assert mse.name == 'mse' pred = torch.tensor([0., 1, 2, 3]) target = torch.tensor([0., 1, 2, 2]) score = mse(pred, target) assert isinstance(score, torch.Tensor)
def __init__(self, HPARAMS): super().__init__() # HPARAMS self.save_hyperparameters() lstm_inp=512 lstm_h = HPARAMS['model_hidden_size'] alpha = HPARAMS['model_alpha'] beta = HPARAMS['model_beta'] gamma = HPARAMS['model_gamma'] csv_path = HPARAMS['speaker_csv_path'] self.encoder = Wav2Vec(pretrained=True) for param in self.encoder.parameters(): param.requires_grad = False for param in self.encoder.feature_extractor.conv_layers[5:].parameters(): param.requires_grad = True self.lstm = nn.LSTM(lstm_inp, lstm_h, batch_first=True) self.attention = Attention(lstm_h) self.height_regressor = nn.Linear(lstm_h, 1) self.age_regressor = nn.Linear(lstm_h, 1) self.gender_classifier = nn.Linear(lstm_h, 1) self.classification_criterion = MSE() self.regression_criterion = MSE() self.mae_criterion = MAE() self.rmse_criterion = RMSELoss() self.accuracy = Accuracy() self.alpha = alpha self.beta = beta self.gamma = gamma self.lr = HPARAMS['training_lr'] self.csv_path = csv_path self.df = pd.read_csv(self.csv_path, sep=' ') self.h_mean = self.df['Height'].mean() self.h_std = self.df['Height'].std() self.a_mean = self.df['Age'].mean() self.a_std = self.df['Age'].std() print(f"Model Details: #Params = {self.count_total_parameters()}\t#Trainable Params = {self.count_trainable_parameters()}")
def __init__( self, regression_task, classification_task, input_size, hidden_size, learning_rate, classifier_lambda, tanh_loss, fill_missing_regression, regressor_activation, classifier_loss_weights=None, **kwargs ): super().__init__() self.save_hyperparameters() # Sanity checks assert 0 <= classifier_lambda <= 1 # Layers self.hidden_fc = nn.Linear( in_features=input_size, out_features=hidden_size, bias=True ) if classification_task: self.classifier_hidden_fc = nn.Linear( in_features=hidden_size, out_features=hidden_size, bias=True ) self.classifier_fc = nn.Linear( in_features=hidden_size, out_features=2, # It's a binary classification bias=True, ) self._build_classifier_loss_weigths(classifier_loss_weights) if regression_task: self.regressor_hidden_fc = nn.Linear( in_features=hidden_size, out_features=hidden_size, bias=True, ) self.regressor_fc = nn.Linear( in_features=hidden_size, out_features=1, bias=True # It's a regression ) # Metrics if classification_task: self.f1 = F1() self.precision= Precision() self.recall = Recall() if regression_task: self.mse = MSE()