VitaBye 2023-04-12 18:14 采纳率: 0%
浏览 37
已结题

请问如何绘制这个函数图线(标签-yolo)

请问能否在yolov6s的训练途中用tensorboard进行可视化绘制函数,还是要在训练完后得到图片,例如下图

img

请问如何绘制这个函数图线,代码怎么写

训练完一次后已得出如下图

img

  • 写回答

2条回答 默认 最新

  • 美羊羊桑7890 2023-04-12 18:25
    关注

    内容来源与ChatGpt4及newbing和百度:


    可以在yolov6s的训练途中用tensorboard进行可视化绘制函数。具体操作如下:

    1. 在训练脚本中添加如下代码,用于记录训练过程中的损失值和准确率等指标:
    from torch.utils.tensorboard import SummaryWriter
    
    writer = SummaryWriter()
    
    for epoch in range(num_epochs):
        ...
        # 计算损失值和准确率等指标
        ...
        writer.add_scalar('train_loss', train_loss, epoch)
        writer.add_scalar('train_acc', train_acc, epoch)
        writer.add_scalar('val_loss', val_loss, epoch)
        writer.add_scalar('val_acc', val_acc, epoch)
    
    writer.close()
    
    1. 在命令行中启动tensorboard服务:
    tensorboard --logdir=path/to/log/dir
    

    其中,path/to/log/dir为保存训练日志的目录。

    1. 打开浏览器,访问http://localhost:6006,即可查看训练过程中的损失值和准确率等指标的变化曲线。可以在左侧的面板中选择不同的标签(如train_loss、train_acc等)来查看不同指标的变化情况。

    对于已经训练完成的模型,可以通过读取日志文件并使用matplotlib绘制出损失值和准确率等指标的变化曲线。具体代码如下:

    import matplotlib.pyplot as plt
    import numpy as np
    
    def plot_loss(log_file):
        with open(log_file, 'r') as f:
            lines = f.readlines()
        train_loss = []
        val_loss = []
        for line in lines:
            if 'train_loss' in line:
                train_loss.append(float(line.split()[-1]))
            elif 'val_loss' in line:
                val_loss.append(float(line.split()[-1]))
        epochs = np.arange(len(train_loss))
        plt.plot(epochs, train_loss, label='train_loss')
        plt.plot(epochs, val_loss, label='val_loss')
        plt.legend()
        plt.xlabel('epoch')
        plt.ylabel('loss')
        plt.show()
    
    def plot_acc(log_file):
        with open(log_file, 'r') as f:
            lines = f.readlines()
        train_acc = []
        val_acc = []
        for line in lines:
            if 'train_acc' in line:
                train_acc.append(float(line.split()[-1]))
            elif 'val_acc' in line:
                val_acc.append(float(line.split()[-1]))
        epochs = np.arange(len(train_acc))
        plt.plot(epochs, train_acc, label='train_acc')
        plt.plot(epochs, val_acc, label='val_acc')
        plt.legend()
        plt.xlabel('epoch')
        plt.ylabel('accuracy')
        plt.show()
    
    log_file = 'path/to/log/file'
    plot_loss(log_file)
    plot_acc(log_file)
    

    祝您问题迎刃而解

    评论

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 修改了问题 4月12日
  • 创建了问题 4月12日