Tensorboard以及Transforms初步学习

一.前情提要

1.本文是代码结合知识点注释即为知识点

2.主要详细讲解Tensorboard以及Transforms代码以及基础知识

3.若想深入学习,建议阅读

P3. Python学习中的两大法宝函数(当然也可以用在PyTorch)_哔哩哔哩_bilibili

二.简述

1.什么是Tensorboard?

TensorBoard是一个由TensorFlow提供的可视化工具,用于帮助开发者可视化、理解和调试TensorFlow程序。它提供了一种直观的方式来查看模型的结构、训练过程中的指标变化、计算图的可视化、嵌入式向量的投影以及其他与TensorFlow相关的信息。TensorBoard可以帮助开发者更好地理解模型的行为,优化模型的性能,以及进行调试和故障排除。

示例:

​编辑

2.什么是Transforms?

"Transforms"通常指的是在机器学习和数据处理领域中,对数据进行转换或变换的操作。这些操作可以是简单的数学操作,如缩放、平移、旋转等,也可以是更复杂的操作,如特征提取、数据增强等。

在计算机视觉任务中,数据转换通常用于数据增强,以增加数据的多样性和模型的泛化能力。常见的图像转换操作包括随机裁剪、水平翻转、旋转、缩放等。

在自然语言处理任务中,数据转换可以是对文本进行标记化、分词、词向量化等操作。

在PyTorch和TensorFlow等深度学习框架中,通常提供了丰富的转换函数和工具,以便开发者可以方便地对数据进行转换和处理,从而更好地训练模型。

三.代码以及注释

1.Tensorboard

from torch.utils.tensorboard import SummaryWriter

writer=SummaryWriter('logs')#存储地址

#实例y=2x

for i in range(100):

    writer.add_scalar('y=x',i,i)

#使用writer对象的add_scalar方法,将名为'y=x'的标量数据写入TensorBoard日志。第一个参数是数据的标签或名称,第二个参数是数据的值,第三个参数是当前循环迭代的步数,也可以理解为X轴的值

writer.close()

from torch.utils.tensorboard import SummaryWriter

import numpy as np

from PIL import Image

writer=SummaryWriter('logs')

#指定图片位置

image_path=r'hymenoptera_data\train\ants\0013035.jpg'

#打开文件

img_PIL=Image.open(image_path)

#将图片文件转化为numpy格式

img_array=np.array(img_PIL)

#HWC是nupy格式下的数据位置,需要调整

writer.add_image('test',img_array,1,dataformats='HWC')

writer.close()

2.Transforms

#为什么我们需要Tensor数据类型

(①Tensor数据类型在深度学习和神经网络领域中具有重要的作用,主要有以下几个原因:

高效的数学运算:Tensor数据类型支持高效的数学运算,包括矩阵乘法、张量运算等,这对于深度学习中大规模的矩阵计算非常重要。

并行计算:Tensor数据类型可以利用GPU和其他并行计算设备进行高效的并行计算,加速模型训练和推断过程。

灵活的维度:Tensor数据类型支持多维数组,能够表示各种复杂的数据结构,包括图像、文本、时间序列等,使得深度学习模型可以处理各种类型的数据。

自动求导:深度学习框架通常提供了对Tensor数据类型的自动求导功能,可以方便地计算损失函数关于模型参数的梯度,从而进行梯度下降等优化算法的训练过程。

与深度学习框架集成:Tensor数据类型是深度学习框架的核心数据类型之一,与框架的其他功能集成度高,可以方便地与神经网络模型、优化算法等进行交互和整合。

综上所述,Tensor数据类型在深度学习中扮演着至关重要的角色,是实现高效、灵活和可扩展的深度学习模型的基础。

from PIL import Image

from torch.utils.tensorboard import SummaryWriter

from torchvision import transforms

img_path= '../important note'

img_path_abs= r'D:\CODE\code2\important note\0013035.jpg'

img=Image.open(img_path_abs)

writer=SummaryWriter('logs')

#1.了解transforms如何被使用

tensor_trans=transforms.ToTensor()

tensor_img=tensor_trans(img)

writer.add_image('Tensor_img',tensor_img)

writer.close()

from PIL import Image

from torch.utils.tensorboard import SummaryWriter

from torchvision import transforms

#创建一个SummaryWriter对象,指定日志文件保存路径为'logs'目录

ps:路径的相关笔记:

writer=SummaryWriter('logs')

#使用PIL库中的open()函数打开一个图像文件,需要在括号内填入图像的路径

img=Image.open('')

print(img)#格式是PIL与张量(tensor)形式不一样

#创建一个transforms模块中的ToTensor对象,用于将图像转换为张量(tensor)形式

trans_totensor=transforms.ToTensor

#使用ToTensor对象的__call__()方法将图像转换为张量形式,存储在img_tensor变量中

img_tensor=trans_totensor(img)

#将转换后的张量图像添加到TensorBoard中,第一个参数是显示名称,第二个参数是图像张量

writer.add_image('Totensor',img_tensor)

#打印张量图像的第一个像素点的值,即红色通道的值

print(img_tensor[0][0][0])

#创建一个transforms模块中的Normalize对象,用于对张量图像进行归一化处理

trans_norm=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])

#在transforms.Normalize函数中,[0.5, 0.5, 0.5]是用于指定图像的均值(mean)参数,而[0.5, 0.5, 0.5]是用于指定图像的标准差(standard deviation)参数。

#在图像处理中,归一化是一种常见的预处理操作,用于将图像的像素值缩放到特定的范围。常见的归一化方法之一是将像素值减去均值,然后除以标准差,以使得图像的像素值分布在接近零的范围内。

# 对于RGB图像,每个颜色通道(红、绿、蓝)都有自己的均值和标准差。在这里,[0.5, 0.5, 0.5]作为均值参数,表示将每个颜色通道的像素值减去0.5;同样地,[0.5, 0.5, 0.5]作为标准差参数,表示将每个颜色通道的像素值除以0.5。

# 为什么选择0.5作为归一化的均值和标准差取决于具体的数据集和应用场景。在某些情况下,将均值和标准差设置为0.5可以将图像的像素值约束在-1到1的范围内。这种范围的好处是可以更好地适应某些深度学习模型的输入要求,例如使用Tanh激活函数的模型。

# 需要注意的是,归一化参数的选择可能会因数据集和任务的不同而有所变化,具体的值需要根据实际情况进行调整和优化。

#使用Normalize对象的__call__()方法对张量图像进行归一化处理,存储在img_norm变量中

img_norm=trans_norm(img_tensor)

print(img_norm[0][0][0])

writer.add_image("Normalize",img_norm,2)

#Resize方式裁剪(512,512)是裁剪的大小

print(img.size)

#这个操作不是简单地缩放图像,而是通过裁剪和缩放来实现

trans_resize=transforms.Resize((512,512))

#PIL格式裁剪后仍是PIL格式

img_resize=trans_resize(img)

#PIL->totensor->tensor

img_resize=trans_totensor(img_resize)

writer.add_image('Resize',img_resize,0)

print(img_resize)

#Compose-resize-2

trans_resize_2=transforms.Resize(512)

#PIL->PIL->tensor,图像首先被调整为最小边长为512的正方形,然后转换为Tensor格式。这个复合操作被称为trans_compose

trans_compose=transforms.Compose([trans_resize_2,trans_totensor])

for i in range(10):

    img_crop=trans_compose(img)

    writer.add_image('RandomCrop',img_crop,i)

writer.close()

三.结语

1.Tensorboard以及Transforms是学习pytorch不可或缺的基础

(如果不知道怎么安装pytorch,博主另一篇博客详细解答了如何安装pytorch)

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

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

相关文章

抖音运营技巧

1、视频时长 抖音的作品是否能够继续被推荐,取决于综合数据,包括完播率、点赞率、评论率、转发率和收藏率等。其中,完播率是最容易控制的因素。对于新号来说,在没有粉丝的初期,发布过长的视频可能会导致无人观看。因此…

金田金业带你一文了解现货黄金开户注意事项

现货黄金作为一种受欢迎的投资品种,吸引了越来越多的投资者。然而,在进行现货黄金开户时,有一些重要的注意事项需要牢记。本文将为您详细介绍现货黄金开户的九大关键要点,确保您能够在投资过程中做出明智的决策。 第一&#xff0c…

Java- maven下载jar包,提示找不到,Could not find artifact

1、执行下面命令行 mvn install:install-file -Dfile/home/quangang/桌面/isv-sdk-2.0.jar -DgroupIdcom.jd -DartifactIdisv-sdk -Dversion2.0 -Dpackangjar 2、然后这里要加上jar包

No dashboards are active for the current data set.

再次记录一下这个离谱的问题 之前出现这个问题是因为目录没写对 今天遇到这个问题的原因是目录是对的,跟目录是否带有中文也没关系 是writer写入的时候写的是空的,离谱的是写入是空的情况下也会生成events日志文件,看起来好像成功写入了一样&…

Spring源码解析上

spring源码解析 整体架构 defaultListableBeanFactory xmlBeanDefinitionReader 创建XmlBeanFactory 对资源文件进行加载–Resource 利用LoadBeandefinitions(resource)方法加载配置中的bean loadBeandefinitions加载步骤 doLoadBeanDefinition xml配置模式 validationMode 获…

2024-04-05 问AI: 介绍一下深度学习中的Leaky ReLU函数

文心一言 Leaky ReLU(Leaky Rectified Linear Unit)函数是深度学习领域中的一种激活函数,主要用于解决ReLU(Rectified Linear Unit)函数在负值区域为零的问题。ReLU函数在输入为正时保持原样,而在输入为负…

nodejs实现TCP端口转发并截包的小工具

近期我正致力于开发一个基于 Go-CQHTTP 的 QQ 机器人应用程序项目,该项目现已成功实现了 Go-CQHTTP 的容器化部署,利用 Docker 技术确保其运行环境的一致性与便捷性。随着项目推进,接下来的工作重心转向部署配套的签名服务器(qsig…

软考111-上午题-【计算机网络】-URL和DNS

一、URL解析 org:各类组织结构(非盈利团队) 1-1、顶级域 顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如:www.baidu.com这个域名中,顶级域是.com(或.COM&#xff…

数据结构系列-队列的结构和队列的实现

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 队列 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除删除数据操作的特殊线性表,队列具有先进先出FIFO,…

全面解析找不到msvcr110.dll,无法继续执行代码的解决方法

MSVCR110.dll的丢失可能导致某些应用程序无法启动。当用户试图打开依赖于该特定版本DLL文件的软件时,可能会遭遇“找不到指定模块”的错误提示,使得程序启动进程戛然而止。这种突如其来的故障不仅打断了用户的正常工作流程,也可能导致重要数据…

基于SpringBoot+微信小程序的农产品销售平台

一、项目背景介绍: 随着人们收入的不断增加、生活水平的普遍提高,对生活质量的要求也日益凸显。而作为关乎每个人的生命、健康安全的食品卫生、质量无疑更被人们所重视。所以,… 2. 其他国家的绿色有机食品所占其国家食品市场比重比较大,如德国在99年便已达到40%,美…

Mac反编译APK

文章目录 第一种方式: brew installapktool 使用说明dex2jar 使用说明 第二种方式: 下载安装包apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)dex2jar 使用说明 安装 JD-GUI 查看jar包中的class文件JD-GUI 使用说明 第一种方式: brew install 安装过程可能很…

使用 mitmproxy 抓包 grpc

昨天在本地执行 grpc 的 quick start(python版本的),我了解 grpc 内部使用的是 HTTP2,所以我就想着抓包来试试,下面就来记录一下这个过程中的探索。 注意:我的电脑上面安装了 Fiddler Classic,…

微信小程序生命周期管理:从数据初始化到事件绑定

作为一个独立的应用开发平台,微信小程序提供了自己的生命周期机制,与我们熟悉的Vue.js框架有一些差异。掌握小程序生命周期的特点和使用技巧,对于开发高质量的小程序应用至关重要。深入理解和掌握小程序生命周期的使用技巧,将有助于我们构建出更加健壮和可维护的小程序应用。 小…

可视化大屏 - 项目1

文章目录 技术栈echarts 可视化需求分析代码实现 技术栈 flexible.js rem 实现不同终端下的响应式布局,根据不同屏幕宽度,自适配布局; html中引入index.js,可以改名为flexible.js;默认划分10份,可以自己修…

Linux存储的基本管理

实验环境: 系统里添加两块硬盘 ##1.设备识别## 设备接入系统后都是以文件的形式存在 设备文件名称: SATA/SAS/USB /dev/sda,/dev/sdb ##s SATA, dDISK a第几块 IDE /dev/hd0,/dev/hd1 ##h hard VIRTIO-BLOCK /de…

SQLAlchemy 建立数据库模型之间的关系

常见关系: 一对多关系多对一关系多对多关系一对一关系 一对多关系(一个作者,多篇文章) ## 一对多关系,单作者-多文章,外键不可少 ## 外键(ForeignKey)总在多的那边定义,关系(relationship)总在单的那边定…

gitee代码上传同步指南(git操作)

1.下载安装git 最开始安装git,下载链接:CNPM Binaries Mirror 选择对应版本下载git即可 2.生成ssh公钥 电脑桌面右键,选择Open Git Bash here 需要注意,在git中复制粘贴功能和windows不同,它有两种方式&#xff…

解码零跑汽车2023年报:营收增速大幅滑坡,净亏42亿,如何讲故事

在2023年的新势力车企中,有这么一家低调崛起的品牌,并没有像蔚小理那样高调,但去年全年销量却反超小鹏汽车,晋升成为新势力车企中的销量第三名,它就是第四家登陆港交所上市的新势力品牌—零跑汽车。 不过,…