Can someone show me how to plot the train and valid loss? what’s the best way to visualize it? perhaps, some explanations for your visualization, please.
import numpy as np
batch_size = 32
epochs = 3
min_valid_loss = np.inf
for e in range(epochs):
train_loss = 0.0
model.train() # Optional when not using Model Specific layer
for data, target in train_loader:
# Transfer Data to GPU if available
if torch.cuda.is_available():
data, target = data.cuda(), target.cuda()
print("targets.data", targets.item())
# Clear the gradients
optimizer.zero_grad()
# Forward Pass
output = (model(data))
squeezed_output = torch.squeeze(output)
# Find the Loss
loss = criterion(squeezed_output.view(-1,1),target.view(-1,1))
# Calculate gradients
loss.backward()
# Update Weights
optimizer.step()
# Calculate Loss
train_loss += loss.item()
valid_loss = 0.0
model.eval() # Optional when not using Model Specific layer
for data, target in valid_loader:
if torch.cuda.is_available():
data, target = data.cuda(), target.cuda()
output = model(data)
squeezed_output = torch.squeeze(output)
loss = criterion(squeezed_output.view(-1,1),target.view(-1,1))
valid_loss = loss.item() * data.size(0)
print(f'Epoch {e+1} \t\t Training Loss: {train_loss / len(train_loader)} \t\t Validation Loss: {valid_loss / len(valid_loader)}')
if min_valid_loss > valid_loss:
print(f'Validation Loss Decreased({min_valid_loss:.6f}--->{valid_loss:.6f}) \t Saving The Model')
min_valid_loss = valid_loss