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()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

USB - Linux Kernel Menuconfig

Linux kernel,make menuconfig,和USB相关的,在主菜单选择Device Drivers。 Device Drivers下面,找到USB support。 在USB support下面,就可以对USB相关的item进行设置。 按照从上到下的顺序,打开的设置依次…

数据结构学习(四)高级数据结构

高级数据结构 1. 概念 之所以称它们为高级的数据结构,是因为它们的实现要比那些常用的数据结构要复杂很多,能够让我们在处理复杂问题的过程中, 多拥有一把利器,同时掌握好它们的性质,以及所适应的场合,在…

Linux常用命令(超详细)

一、基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启 1.2 帮助命令 –help命令 shutdown --help: ifconfig --help:查看…

大模型总结

抛开大模型基座训练,我们还可以关注什么? - 知乎 大模型LLM领域,有哪些可以作为学术研究方向? 方向一:大模型的基础理论问题 大力出奇迹,涌现,目前还需要科学家继续研究理论基础 也就是先有…

Spring中@import注解终极揭秘!

技术概念 它能干啥 Import注解在Spring框架中主要用于解决模块化和配置管理方面的技术问题,它可以帮助开发者实现以下几个目标: 模块化配置:在大型项目中,通常需要将配置信息分散到多个配置类中,以便更好地组织和管…

无名管道数据交换

#include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include<errno.h> #include <unistd.h> #include<fcntl.h> #include<string.h>int main(int argc, const char *argv[]) {//开辟写入管道1if(mkfifo("./AAA&…

在nginx 服务器部署vue项目

以人人快速开发的开源项目&#xff1a;renren-fast-vue 为例 注&#xff1a;这里开始认为各位都会使用nginx 打包vue项目 npm run build 测试打包的项目是否可以运行 serve dist 可以正常运行 编译报错请移步到&#xff1a;renren-fast-vue1.2.2 项目编译报错: build g…

精选制造业项目管理工具,助力生产管理

有什么好用的制造业项目管理工具&#xff1f;制造业作为传统行业&#xff0c;经常会采用项目制管理模式&#xff0c;项目管理对制造业的重要性不言而喻。2024年制造业企业面对国内依然激烈的竞争&#xff0c;想要进一步发展&#xff0c;不仅要对外谋取&#xff0c;也要对内优化…

【WPS】Excel查重数据对比

数据对比 数据对比标记重复数据查询过滤处理

ZYNQ--PS_PL交互(AXI_HP)

AXI_HP接口 通过AXI_HP接口,可直接通过AXI_FULL协议向DDR中通过DMA传输数据。 BD设计 AXI_HP接口设置 AXI_Master代码 module axi_full_master #(parameter C_M_TARGET_SLAVE_BASE_ADDR = 32h40000000,parameter integer C_M_AXI_BURST_LEN = 16,parameter integer …

【Python】使用numpy进行神经网络激活函数算法描述

【Python】使用numpy进行神经网络激活函数算法描述 系统&#xff1a;macOS 10.14.5 IDE&#xff1a;PyCharm 2018.2.4 一、What 1.1 NumPy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库&#xff0c;支持大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供…

2024-03-05

作业要求&#xff1a; 使用write 和 read 实现 文件夹拷贝功能&#xff0c;不考虑递归拷贝使用循环fork的形式。创建一条进程链&#xff0c;链条上总共有100个进程 要求&#xff1a;程序不崩溃 作业1&#xff1a;使用write 和 read 实现 文件夹拷贝功能&#xff0c;不考虑递归拷…