Pytorch学习 day03(Tensorboard、Transforms)

Tensorboard

  • Tensorboard能够可视化loss的变化过程,便于我们查看模型的训练状态,也能查看模型当前的输入和输出结果
    • 在Pycharm中,可以通过按住ctrl,并左键点击某个库来进入源文件查看该库的使用方法
    • SummaryWriter是用来向log_dir文件夹中写入事件文件的一个类,并且该事件文件可以被tensorboard解析,如下:
bash 复制代码
class SummaryWriter:
    """Writes entries directly to event files in the log_dir to be
    consumed by TensorBoard.

    The `SummaryWriter` class provides a high-level API to create an event file
    in a given directory and add summaries and events to it. The class updates the
    file contents asynchronously. This allows a training program to call methods
    to add data to the file directly from the training loop, without slowing down
    training.
    """
复制代码
* 我们可以创建SummaryWriter对象来在logs文件夹下生成log文件,如下:
* 同时每次生成的writer()对象都会生成log文件,tensorboard --logdir logs 会将 logs文件夹下的log文件全展示出来
bash 复制代码
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")  # 创建一个writer对象  logs是保存的路径

# writer.add_image()    # 添加图像
for i in range(10):
    writer.add_scalar("y=3x", 4*i, i)     # 添加标量

writer.close()  # 关闭writer
复制代码
* 通过SummaryWriter中的.add_scalar()函数,向logs文件夹的log文件添加标量数据,tensorboard 可以根据logs文件夹中的log文件,绘制图像,如下:


* 但是每次绘制图像前,如果不更换图片的标题,那么最好删除之前绘制的log文件,避免出现图像混乱,如下:

  • 可以通过SummaryWriter中的.add_image()函数,来向logs文件夹中的log文件添加图像数据,tensorboard可以根据logs文件中的log文件,展示图像,如下:

Transforms

  • transforms指transforms.py(python文件),相当于一个工具箱

  • 我们从工具箱中选取一个工具模板(class类),根据自己的需求打造一个具体的工具,把特定格式的图片经过这个工具,得到我们想要的图片变换结果

  • transforms的使用方法:

bash 复制代码
from PIL import Image
from torchvision import transforms

# 通过transforms.ToTensor()将PIL图像转换为张量
# 1. transforms怎么使用

# 绝对路径:D:\learn_pytorch\learn_pytorch\Dataset\train\ants_image\0013035.jpg
# 相对路径:Dataset/train/ants_image/0013035.jpg

img_path = "Dataset/train/ants_image/0013035.jpg"   # 相对路径
img = Image.open(img_path)  # 打开图像

tensor_trans = transforms.ToTensor()    # 实例化transforms.ToTensor()类
img_tensor = tensor_trans(img)  # 调用实例化对象的__call__方法  # 将PIL图像转换为张量
print(img_tensor)   # tensor([[[0.0000, 0.0000, 0.0000,  ..., 0.0000, 0.0000, 0.0000],
复制代码
* 注意:这里的_ _ call _ _ 方法跟_ _ init _ _ 方法都是是python的一种内置方法,也叫魔法方法,但是它们两不一样,如下:
bash 复制代码
1. _ _ call _ _方法是把对象当成函数来使用的时候,会自动调用,也就是说把类的实例化对象,变成一个可以调用的对象,可以让实例对象可以像函数一样被调用。
2. 在python官网里面说的是,此方法会在实例作为一个函数被"调用"时被调用。

例如: 
class A:
    # 定义__call__方法
    def __call__(self, a, b):
        print("调用__call__()方法,把对象当成函数来使用", a, b)
    def hello(self, e, f):
        print("调用hello" + e + f)
    
        
c = A()
c("我是参数a", "你是参数b")  # 调用方法一
print("-" * 100)
c.hello("我是参数e", "你是参数f")

# 调用__call__()方法,把对象当成函数来使用 我是参数a 你是参数b
# ----------------------------------------------------------------------------------------------------
# 调用hello我是参数e你是参数f
  • tensor数据类型
    • 下图可以看到tensor数据类型包含神经网络所需要的参数

    • 我们可以将PIL格式的图片传给ToTensor,也可以将ndarray格式的图片传给ToTensor
    • 可以使用opencv来将图片读取成ndarray格式,如下:

    • tensorboard 可以展示ndarray格式的图片,也可以展示tensor格式的图片,如下:
bash 复制代码
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

# 通过transforms.ToTensor()将PIL图像转换为张量
# 1. transforms怎么使用

# 绝对路径:D:\learn_pytorch\learn_pytorch\Dataset\train\ants_image\0013035.jpg
# 相对路径:Dataset/train/ants_image/0013035.jpg

img_path = "Dataset/train/ants_image/0013035.jpg"   # 相对路径
# img_path = "learn_pytorch/Dataset/train/ants_image/0013035.jpg"   # 相对路径
img = Image.open(img_path)  # 打开图像

writer = SummaryWriter("logs")
tensor_trans = transforms.ToTensor()      # 实例化transforms.ToTensor()类
img_tensor = tensor_trans(img)  # 调用实例化对象的__call__方法    # 将PIL图像转换为张量

writer.add_image("tensor_img", img_tensor)  # 将张量写入tensorboard
writer.close()
相关推荐
zzc9216 分钟前
MATLAB仿真生成无线通信网络拓扑推理数据集
开发语言·网络·数据库·人工智能·python·深度学习·matlab
点赋科技7 分钟前
沙市区举办资本市场赋能培训会 点赋科技分享智能消费新实践
大数据·人工智能
Camellia031114 分钟前
嵌入式学习--江协stm32day5
stm32·嵌入式硬件·学习
HeteroCat14 分钟前
一周年工作总结:做了一年的AI工作我都干了什么?
人工智能
a_1571532498618 分钟前
SpringCloud学习笔记-4
笔记·学习·spring cloud
2301_8050545628 分钟前
Python训练营打卡Day48(2025.6.8)
pytorch·python·深度学习
YSGZJJ28 分钟前
股指期货技术分析与短线操作方法介绍
大数据·人工智能
Guheyunyi37 分钟前
监测预警系统重塑隧道安全新范式
大数据·运维·人工智能·科技·安全
码码哈哈爱分享37 分钟前
[特殊字符] Whisper 模型介绍(OpenAI 语音识别系统)
人工智能·whisper·语音识别