[英]plot training and validation loss in pytorch
I am using pytorch to train my CNN.network.我正在使用 pytorch 来训练我的 CNN.network。 I want to plot my training and validation loss curves to visulize the model performance.
我想要 plot 我的训练和验证损失曲线来可视化 model 性能。 How can I plot two curves?
我怎样才能plot两条曲线?
I have below code我有以下代码
# create a function (this my favorite choice)
def RMSELoss(predicted,target):
return torch.sqrt(torch.mean((predicted-target)**2))
criterion = RMSELoss
# loss = torch.sqrt(criterion(x, y))
optimizer = torch.optim.Adam(model.parameters(), lr=0.0001)
epochs = 300
n_total_steps = len(train_dataset)
trainingEpoch_loss = []
validationEpoch_loss = []
for epoch in range(epochs):
step_loss = []
model.train()
for i, data in enumerate(train_dataset):
feature,target = data['data'].type(torch.FloatTensor),torch.tensor(data['target']).type(torch.FloatTensor)
# Clear the gradients
optimizer.zero_grad()
# Forward Pass
outputs = model(feature)
# Find the Loss
training_loss = criterion(outputs, target)
# Calculate gradients
training_loss.backward()
# Update Weights
optimizer.step()
# Calculate Loss
step_loss.append(training_loss.item())
if (i+1) % 1 == 0:
print (f'Epoch [{epoch+1}/{epochs}], Step [{i+1}/{n_total_steps}], Loss: {training_loss.item():.4f}')
trainingEpoch_loss.append(np.array(step_loss).mean())
model.eval() # Optional when not using Model Specific layer
for i, data in enumerate(val_dataset):
validationStep_loss = []
feature,target = data['data'].type(torch.FloatTensor),torch.tensor(data['target']).type(torch.FloatTensor)
# Forward Pass
outputs = model(feature)
# Find the Loss
validation_loss = criterion(outputs, target)
# Calculate Loss
validationStep_loss.append(validation_loss.item())
validationEpoch_loss.append(np.array(validationStep_loss).mean())
Can you let me know if i am doing right or not?你能让我知道我做得对还是不对? Also please let me know how to plot training and validation loss?
也请让我知道 plot 培训和验证损失如何?
you are correct to collect your epoch losses in trainingEpoch_loss
and validationEpoch_loss
lists.你在
trainingEpoch_loss
和validationEpoch_loss
列表中收集你的时代损失是正确的。 Now, after the training, add code to plot the losses:现在,在训练之后,将代码添加到 plot 的损失中:
from matplotlib import pyplot as plt
plt.plot(trainingEpoch_loss, label='train_loss')
plt.plot(validationEpoch_loss,label='val_loss')
plt.legend()
plt.show
read matplotlib docs for more fancly plot features.阅读 matplotlib 文档以获得更多有趣的 plot 功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.