Pytorch学习 day03(Tensorboard、Transforms)

news2024/11/17 15:42:37

Tensorboard

  • Tensorboard能够可视化loss的变化过程,便于我们查看模型的训练状态,也能查看模型当前的输入和输出结果
    • 在Pycharm中,可以通过按住ctrl,并左键点击某个库来进入源文件查看该库的使用方法
    • SummaryWriter是用来向log_dir文件夹中写入事件文件的一个类,并且该事件文件可以被tensorboard解析,如下:
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文件全展示出来
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的使用方法:

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

六、软考-系统架构设计师笔记-软件工程基础知识

1、软件工程 软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件并对上述方法的研究。 软件要经历从需求分析、软件设计、软件开发、运行维护,直至被淘汰这样的全过程,这个过程称为软件的生…

【Android】位置修改相关

获取位置服务总开关状态 //获取LOCATION_MODE值,但adb状态下无法获取 //0为关闭,1 gps、2 network、3 高精度等 int state Settings.Secure.getInt(mContext.getContentResolver(),Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_HIGH_…

嵌入式硬件设计实例:基于STM32的流水灯原理图和PCB设计

最近本来在忙别的事,大约忙到五一以后吧,没有时间研究一些深入的知识。本来想停更的,但是刚刚申请到博客专家,想想还是得更新点文章。这里就把一些以前我做过的一些简单的硬件设计拿来出来复习一下。 本篇文章就来介绍一下&#…

【论文翻译】结构化状态空间模型

文章目录 3.2 对角结构化状态空间模型3.2.1 S4D:对角SSM算法3.2.2 完整应用实例 3.3 对角化加低秩(DPLR)参数化3.3.1 DPLR 状态空间核算法3.3.2 S4-DPLR 算法和计算复杂度3.3.3赫尔维兹(稳定)DPLR形式 这篇文章是Mamba作者博士论文…

重量的定义、质量和重量之间的区别

一、简述 物体的重量取决于该物体所在空间点的引力场。重量是一种力,因此它是一个矢量,这意味着它有方向和大小。通过自由体图来表示物体重量产生的力通常很方便。 重量总是从物体的质心向下作用到地球中心。(如果你在不同的天体上&#xff0…

万物皆可模块化分解

引言 为何要模块化,这里的主体是人,客体是事物。当事物很小时,人可以很轻松的解决;但是当事物远大于人能处理的范围时,我们就可以考虑对它进行模块化分解。模块化是一种解决复杂问题的方式,放之四海而皆可…

LVS集群(Linux Virtual server)相关介绍及LVS的NAT模式部署

群集的含义 ●Cluster,集群、群集由多台主机构成,但对外只表现为一个整体,只提供访问入口(域名或IP地址),相当于一台大型计算机 问题: 互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠…

Nvm下载安装和基本使用

下载与安装 github地址:Releases coreybutler/nvm-windows (github.com) 默认安装:安装nvm时候,全默认即可(如果自定义目录,切记 nvm的安装路径 :不要有汉字,不要有空格,不然后面会…

day04-SpringBootWeb入门

一、SpringBootWeb快速入门 1 需求 需求:基于 SpringBoot 的方式开发一个 web 应用,浏览器发起请求 /hello后,给浏览器返回字符串“Hello World ~”。 2 开发步骤 第1步:创建 SpringBoot 工程项目 第2步:定义 HelloC…

在 Rust 中实现 TCP : 3. TCP连接四元组

连接四元组 我们的项目已经取得了很大的进展——接下来能够开始解决 TCP 协议的实现问题。下面将讨论 TCP 的一些行为及其各种状态。 在多任务操作系统中,各种应用程序(例如 Web 服务器、电子邮件客户端等)需要同时进行网络访问。为了区分这…

使用GitOps自动化推动AI/ML工作流程

作为一名深耕自动化和人工智能领域的开发人员,我们逐渐认识到尖端工具和方法之间的显着协同作用,这些协同作用突破了可能性的界限。在这次探索中,我们想分享一个概念,它不仅彻底改变了我们的软件开发和基础设施管理方法&#xff0…

华为智慧教室3.0的晨光,点亮教育智能化变革

“教室外有更大的世界,但世界上没有比教室更伟大的地方。” 我们在求学阶段,都听说过这句话,但往往是在走出校园之后,才真正理解了这句话。为了让走出校园的孩子能够有能力,有勇气探索广阔的世界。我们应该准备最好的教…

JProfiler详解 JVM性能监测内存泄露分析工具

JProfiler详解 JProfiler简介主要功能特点使用场景注意事项使用案例使用步骤Could not verify ssh-ed25519 host key with fingerprint 问题解决内存泄露分析 JProfiler简介 JProfiler是一款业界领先的Java性能分析工具,由ej-technologies公司开发,专门…

Elasticsearch:使用 Streamlit、语义搜索和命名实体提取开发 Elastic Search 应用程序

作者:Camille Corti-Georgiou 介绍 一切都是一个搜索问题。 我在 Elastic 工作的第一周就听到有人说过这句话,从那时起,这句话就永久地印在了我的脑海中。 这篇博客的目的并不是我出色的同事对我所做的相关陈述进行分析,但我首先…

dolphinescheduler调用API

(作者:陈玓玏) 1. 打开api文档 api文档地址:http://{api server ip}:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&langcn,我是用k8s部署的,所以ip和端口是由service决定的&#xf…

前端学习之HTML(第二天)--多媒体标签和表格标签

注&#xff1a;里面的注释是对各个标签的解释 多媒体标签 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title> </head> <body> <!-- audio是音频可以填写绝对路径也可填写相对路径 --> &l…

【Hadoop大数据技术】——Hadoop概述与搭建环境(学习笔记)

&#x1f4d6; 前言&#xff1a;随着大数据时代的到来&#xff0c;大数据已经在金融、交通、物流等各个行业领域得到广泛应用。而Hadoop就是一个用于处理海量数据的框架&#xff0c;它既可以为海量数据提供可靠的存储&#xff1b;也可以为海量数据提供高效的处理。 目录 &#…

CSS定位,web游戏开发

面试前的准备 在这部分&#xff0c;我将详细讲解面试前我们需要做哪些方面的工作&#xff0c;以保证我们在面试过程中更加顺利。 准备一份漂亮的简历 一份漂亮的简历就是你进入大厂的敲门砖。 网上有很多教程教大家如何写出一份漂亮的简历&#xff0c;这里我就不做重复劳动了…

【SpringBoot3.x教程02】SpringBoot配置文件详解

前言&#xff1a;什么是配置文件 SpringBoot的配置文件是指用于定义和管理SpringBoot应用程序配置的文件。这些配置文件允许开发者调整和控制应用程序的行为&#xff0c;而无需改变代码。主要有两种格式的配置文件&#xff1a; 1、application.properties&#xff1a;这是一种使…

JavaScript 闭包:让你更深入了解函数和作用域

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…