pytorch使用tensorboardX进行loss可视化实例

PyTorch使用TensorboardX进行Loss可视化实例

在PyTorch中,我们可以使用TensorboardX库将训练过程中的Loss可视化。本文将介绍如何使用TensorboardX库进行Loss可视化,并提供两个示例说明。

1. 安装TensorboardX

要使用TensorboardX库,我们需要先安装它。可以使用以下命令在终端中安装TensorboardX库。

pip install tensorboardX

2. 示例1:使用TensorboardX可视化训练过程中的Loss

以下是一个示例,展示如何使用TensorboardX库可视化训练过程中的Loss。

import torch
import torch.nn as nn
import torch.optim as optim
from tensorboardX import SummaryWriter

# 创建一个SummaryWriter对象,用于记录训练过程中的Loss
writer = SummaryWriter()

# 创建一个简单的神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

model = Net()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(10):
    running_loss = 0.0
    for i in range(10):
        # 生成随机输入和标签
        inputs = torch.randn(1, 10)
        labels = torch.randn(1, 1)

        # 将梯度清零
        optimizer.zero_grad()

        # 前向传播
        outputs = model(inputs)

        # 计算损失
        loss = criterion(outputs, labels)

        # 反向传播
        loss.backward()

        # 更新参数
        optimizer.step()

        running_loss += loss.item()

    # 记录Loss
    writer.add_scalar('training loss', running_loss/10, epoch)

# 关闭SummaryWriter对象
writer.close()

在上面的示例中,我们首先创建了一个SummaryWriter对象,用于记录训练过程中的Loss。然后,我们创建了一个简单的神经网络模型,并定义了损失函数和优化器。接下来,我们使用for循环遍历训练数据集,并在每个批次上训练模型。在每个epoch结束时,我们使用writer.add_scalar()方法记录训练过程中的Loss。最后,我们关闭SummaryWriter对象。

3. 示例2:使用TensorboardX可视化多个模型的Loss

以下是一个示例,展示如何使用TensorboardX库可视化多个模型的Loss。

import torch
import torch.nn as nn
import torch.optim as optim
from tensorboardX import SummaryWriter

# 创建一个SummaryWriter对象,用于记录训练过程中的Loss
writer = SummaryWriter()

# 创建两个简单的神经网络模型
class Net1(nn.Module):
    def __init__(self):
        super(Net1, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

class Net2(nn.Module):
    def __init__(self):
        super(Net2, self).__init__()
        self.fc1 = nn.Linear(10, 3)
        self.fc2 = nn.Linear(3, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

model1 = Net1()
model2 = Net2()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer1 = optim.SGD(model1.parameters(), lr=0.01)
optimizer2 = optim.SGD(model2.parameters(), lr=0.01)

# 训练模型1
for epoch in range(10):
    running_loss = 0.0
    for i in range(10):
        # 生成随机输入和标签
        inputs = torch.randn(1, 10)
        labels = torch.randn(1, 1)

        # 将梯度清零
        optimizer1.zero_grad()

        # 前向传播
        outputs = model1(inputs)

        # 计算损失
        loss = criterion(outputs, labels)

        # 反向传播
        loss.backward()

        # 更新参数
        optimizer1.step()

        running_loss += loss.item()

    # 记录Loss
    writer.add_scalar('model1 training loss', running_loss/10, epoch)

# 训练模型2
for epoch in range(10):
    running_loss = 0.0
    for i in range(10):
        # 生成随机输入和标签
        inputs = torch.randn(1, 10)
        labels = torch.randn(1, 1)

        # 将梯度清零
        optimizer2.zero_grad()

        # 前向传播
        outputs = model2(inputs)

        # 计算损失
        loss = criterion(outputs, labels)

        # 反向传播
        loss.backward()

        # 更新参数
        optimizer2.step()

        running_loss += loss.item()

    # 记录Loss
    writer.add_scalar('model2 training loss', running_loss/10, epoch)

# 关闭SummaryWriter对象
writer.close()

在上面的示例中,我们首先创建了一个SummaryWriter对象,用于记录训练过程中的Loss。然后,我们创建了两个简单的神经网络模型,并定义了损失函数和优化器。接下来,我们使用for循环遍历训练数据集,并在每个批次上训练模型。在每个epoch结束时,我们使用writer.add_scalar()方法记录训练过程中的Loss,并为每个模型指定一个不同的tag。最后,我们关闭SummaryWriter对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pytorch使用tensorboardX进行loss可视化实例 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 解决pytorch报错ImportError: numpy.core.multiarray failed to import

    最近在学pytorch,先用官网提供的conda命令安装了一下: conda install pytorch torchvision cudatoolkit=10.2 -c pytorch 然后按照官网的方法测试是否安装成功,能不能正常使用: import torch x = torch.rand(5, 3) print(x) 若能正常打印出x的值,则说明可…

    PyTorch 2023年4月7日
    00
  • PyTorch实现TPU版本CNN模型

    作者|DR. VAIBHAV KUMAR编译|VK来源|Analytics In Diamag 随着深度学习模型在各种应用中的成功实施,现在是时候获得不仅准确而且速度更快的结果。 为了得到更准确的结果,数据的大小是非常重要的,但是当这个大小影响到机器学习模型的训练时间时,这一直是一个值得关注的问题。 为了克服训练时间的问题,我们使用TPU运行时环境来加速训练…

    2023年4月8日
    00
  • Pytorch_第三篇_Pytorch Autograd (自动求导机制)

    Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心。 本文通过logistic回归模型来介绍Pytorch的自动求导机制。首先,本文介绍了tensor与求导相关的属性。其次,通过logistic回归模型来帮助理解BP算法中的前向传播以及反向传播中的导数计算。 以下均为初学者笔记。 Ten…

    2023年4月8日
    00
  • PyTorch入门基础

    什么是 PyTorch ? PyTorch是一个python库,它主要提供了两个高级功能: GPU加速的张量计算 构建在反向自动求导系统上的深度神经网络 1. 定义数据 一般定义数据使用torch.Tensor ,可以定义多种类型, tensor的意思是张量,是数字各种形式的总称 import torch # 可以是一个数 x = torch.tensor(…

    2023年4月8日
    00
  • [笔记] 将numpy的操作转移到pytorch的tensor上运行可以加速

    简单起见,仅实验了矩阵加法及广播操作,其他操作未实验。 目前结论是: 将numpy转为pytorch的tensor,可以加速(0.22s -> 0.12s) 如果将tensor加载到gpu上,能够加速更多(0.22s -> 0.0005s),但是内存与显存的拷贝时间不容忽视 实验过的环境如下,结论都成立: Win10, 64 bit Ubuntu…

    PyTorch 2023年4月8日
    00
  • pytorch transform 和 OpenCV及PIL转换

    img_path = “./data/img_37.jpg” # transforms.ToTensor() transform1 = transforms.Compose([ transforms.ToTensor(), # range [0, 255] -> [0.0,1.0] ] ) ## openCV img = cv2.imread(img_…

    PyTorch 2023年4月8日
    00
  • PyTorch——(7) MNIST手写数字识别实例

    代码 import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms batch_size=200 learning_rate=0.01 epo…

    2023年4月8日
    00
  • Pytorch之如何dropout避免过拟合

    PyTorch之如何使用dropout避免过拟合 在深度学习中,过拟合是一个常见的问题。为了避免过拟合,我们可以使用dropout技术。本文将提供一个完整的攻略,介绍如何使用PyTorch中的dropout技术来避免过拟合,并提供两个示例,分别是使用dropout进行图像分类和使用dropout进行文本分类。 dropout技术 dropout是一种常用的正…

    PyTorch 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部