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

yizhihongxing

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实现更新部分网络,其他不更新

    在PyTorch中,我们可以使用nn.Module.parameters()函数来获取模型的所有参数,并使用nn.Module.named_parameters()函数来获取模型的所有参数及其名称。这些函数可以帮助我们实现更新部分网络,而不更新其他部分的功能。 以下是一个完整的攻略,包括两个示例说明。 示例1:更新部分网络 假设我们有一个名为model的模型…

    PyTorch 2023年5月15日
    00
  • anaconda的安装和配置环境及导入pycharm的方法

    Anaconda是一个流行的Python发行版,它包含了许多常用的Python库和工具。本文提供一个完整的攻略,以帮助您安装和配置Anaconda环境,并将其导入PyCharm。 步骤1:下载和安装Anaconda 访问Anaconda官网,下载适用于您的操作系统的Anaconda安装程序。 运行安装程序,并按照安装向导进行安装。 步骤2:创建和配置Anac…

    PyTorch 2023年5月15日
    00
  • Pytorch中的torch.gather函数

    gather函数的的官方文档: torch.gather(input, dim, index, out=None) → Tensor Gathers values along an axis specified by dim. For a 3-D tensor the output is specified by: out[i][j][k] = input[…

    PyTorch 2023年4月6日
    00
  • Pytorch中RNN和LSTM的简单应用

    目录 使用RNN执行回归任务 使用LSTM执行分类任务 使用RNN执行回归任务 import torch from torch import nn import numpy as np import matplotlib.pyplot as plt # torch.manual_seed(1) # reproducible # Hyper Parameter…

    PyTorch 2023年4月8日
    00
  • Pytorch中RNN参数解释

      其实构建rnn的代码十分简单,但是实际上看了下csdn以及官方tutorial的解释都不是很详细,说的意思也不能够让人理解,让大家可能会造成一定误解,因此这里对rnn的参数做一个详细的解释: self.encoder = nn.RNN(input_size=300,hidden_size=128,dropout=0.5) 在这句代码当中: input_s…

    PyTorch 2023年4月8日
    00
  • pytorch 更改预训练模型网络结构的方法

    在PyTorch中,我们可以使用预训练模型来加速模型训练和提高模型性能。但是,有时候我们需要更改预训练模型的网络结构以适应我们的任务需求。以下是使用PyTorch更改预训练模型网络结构的完整攻略,包括两个示例说明。 1. 更改预训练模型的全连接层 以下是使用PyTorch更改预训练模型的全连接层的步骤: 导入必要的库 python import torch …

    PyTorch 2023年5月15日
    00
  • pytorch 移动端部署之helloworld的使用

    PyTorch移动端部署之HelloWorld的使用 PyTorch是一种非常流行的深度学习框架,可以在移动设备上进行部署。本文将介绍如何使用PyTorch在移动设备上部署HelloWorld,并提供两个示例说明。 安装PyTorch 在移动设备上部署PyTorch之前,我们需要先安装PyTorch。PyTorch支持多种移动设备,包括Android和iOS…

    PyTorch 2023年5月16日
    00
  • PyTorch实现Seq2Seq机器翻译

    Seq2Seq简介 Seq2Seq由Encoder和Decoder组成,Encoder和Decoder又由RNN构成。Encoder负责将输入编码为一个向量。Decoder根据这个向量,和上一个时间步的预测结果作为输入,预测我们需要的内容。 Seq2Seq在训练阶段和预测阶段稍有差异。如果Decoder第一个预测预测的输出就错了,它会导致“蝴蝶效应“,影响后…

    2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部