Pytorch学习 day03(Tensorboard、Transforms)

2024-03-06 03:28

本文主要是介绍Pytorch学习 day03(Tensorboard、Transforms),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Tensorboard

  • Tensorboard能够可视化loss的变化过程,便于我们查看模型的训练状态,也能查看模型当前的输入和输出结果
    • 在Pycharm中,可以通过按住ctrl,并左键点击某个库来进入源文件查看该库的使用方法
    • SummaryWriter是用来向log_dir文件夹中写入事件文件的一个类,并且该事件文件可以被tensorboard解析,如下:
class SummaryWriter:"""Writes entries directly to event files in the log_dir to beconsumed by TensorBoard.The `SummaryWriter` class provides a high-level API to create an event filein a given directory and add summaries and events to it. The class updates thefile contents asynchronously. This allows a training program to call methodsto add data to the file directly from the training loop, without slowing downtraining."""
* 我们可以创建SummaryWriter对象来在logs文件夹下生成log文件,如下:
* 同时每次生成的writer()对象都会生成log文件,tensorboard --logdir logs 会将 logs文件夹下的log文件全展示出来
from torch.utils.tensorboard import SummaryWriterwriter = 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的使用方法:

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.jpgimg_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的一种内置方法,也叫魔法方法,但是它们两不一样,如下:
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格式的图片,如下:
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.jpgimg_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()

在这里插入图片描述

这篇关于Pytorch学习 day03(Tensorboard、Transforms)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/778731

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你