简体   繁体   English

plot pytorch 中的训练和验证损失

[英]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_lossvalidationEpoch_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.

相关问题 验证损失和训练损失曲线,可以接受吗? - Validation loss and training loss curve , is that acceptable? plot 验证和 pytorch 中的 val psnr - plot validation and val psnr in pytorch 验证准确性/损失是否会影响培训 - Does validation accuracy/loss impact training in caffe 如何在自定义训练循环中实现验证损失? - How to implement validation loss in custom training loop? 如何绘制训练误差和验证误差与时期数的关系? - how to plot training error and validation error vs number of epochs? 在训练阶段我的 CNN 验证准确性和损失函数的奇怪行为 - Weird behaviour for my CNN validation accuracy and loss function during training phase 图像分类。 初始训练期间卡住的验证损失(v1) - Image Classification. Validation loss stuck during training with inception (v1) 如何解释 model 学习曲线(训练和验证数据的时代准确度和损失曲线)? - How to Interpret model learning curve (epoch wise accuracy & loss curve for training & validation data)? PyTorch:为什么在训练 epochs 循环内部或外部调用验证准确度会发生变化? - PyTorch: Why does validation accuracy change once calling it inside or outside training epochs loop? 评估CNN训练水平的最佳指标是什么? 验证错误或培训损失? - What is the best metric to evaluate how well a CNN is trained? validation error or training loss?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM