Skip to content
Snippets Groups Projects
Commit 05d9d44b authored by EXT Laurent Risser's avatar EXT Laurent Risser
Browse files

Upload New File

parent 3d80a8da
No related branches found
No related tags found
1 merge request!5Update style in README
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
import numpy as np
class convergence_history_CrossEntropyLoss:
def __init__(self):
"""
Class to save the training converge properties
"""
self.loss=nn.CrossEntropyLoss()
self.history={} #Save convergence measures in the end of each epoch
self.history['loss']=[] #value of the cost function on training data
self.history['accuracy']=[] #percentage of correctly classified instances on training data (if classification)
self.history['val_loss']=[] #value of the cost function on validation data
self.history['val_accuracy']=[] #percentage of correctly classified instances on validation data (if classification)
def update(self,current_model,xtrain,ytrain,xtest,ytest):
#convergence information on the training data
nb_training_obs=xtrain.shape[0]
if nb_training_obs>xtest.shape[0]:
nb_training_obs=xtest.shape[0]
epoch_shuffler=np.arange(xtrain.shape[0])
np.random.shuffle(epoch_shuffler)
mini_batch_observations = epoch_shuffler[:nb_training_obs]
var_X_batch = Variable(xtrain[mini_batch_observations,:]).float()
var_y_batch = Variable(ytrain[mini_batch_observations])
y_pred_batch = current_model(var_X_batch)
curr_loss = self.loss(y_pred_batch, var_y_batch)
self.history['loss'].append(curr_loss.item())
self.history['accuracy'].append( float( (torch.argmax(y_pred_batch, dim= 1) == var_y_batch).float().mean()) )
#convergence information on the test data
var_X_batch = Variable(xtest[:,:]).float()
var_y_batch = Variable(ytest[:])
y_pred_batch = current_model(var_X_batch)
curr_loss = self.loss(y_pred_batch, var_y_batch)
self.history['val_loss'].append(curr_loss.item())
self.history['val_accuracy'].append( float( (torch.argmax(y_pred_batch, dim= 1) == var_y_batch).float().mean()) )
class convergence_history_MSELoss:
def __init__(self):
"""
Class to save the training converge properties
"""
self.loss = nn.MSELoss()
self.MAE_loss = nn.L1Loss()
self.history={} #Save convergence measures in the end of each epoch
self.history['loss']=[] #value of the cost function on training data
self.history['mae']=[] #mean absolute error on training data
self.history['val_loss']=[] #value of the cost function on validation data
self.history['val_mae']=[] #mean absolute error on validation data
def update(self,current_model,xtrain,ytrain,xtest,ytest):
#convergence information on the training data
nb_training_obs=xtrain.shape[0]
if nb_training_obs>xtest.shape[0]:
nb_training_obs=xtest.shape[0]
epoch_shuffler=np.arange(xtrain.shape[0])
np.random.shuffle(epoch_shuffler)
mini_batch_observations = epoch_shuffler[:nb_training_obs]
var_X_batch = Variable(xtrain[mini_batch_observations,:]).float()
var_y_batch = Variable(ytrain[mini_batch_observations]).float()
y_pred_batch = current_model(var_X_batch)
curr_loss = self.loss(y_pred_batch.view(-1), var_y_batch.view(-1))
self.history['loss'].append(curr_loss.item())
self.history['mae'].append(self.MAE_loss(y_pred_batch.view(-1), var_y_batch.view(-1)).item())
#convergence information on the test data
var_X_batch = Variable(xtest[:,:]).float()
var_y_batch = Variable(ytest[:]).float()
y_pred_batch = current_model(var_X_batch)
curr_loss = self.loss(y_pred_batch.view(-1), var_y_batch.view(-1))
self.history['val_loss'].append(curr_loss.item())
self.history['val_mae'].append(self.MAE_loss(y_pred_batch.view(-1), var_y_batch.view(-1)).item())
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment