Tensorboard以及Transforms初步学习

本文详细介绍了Tensorboard在深度学习中的可视化作用,以及Transforms在数据预处理中的重要性,展示了如何使用这两个工具在PyTorch中进行模型监控和数据转换,为Python初学者和进阶者提供基础知识和实例。
摘要由CSDN通过智能技术生成

一.前情提要

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

ps:路径的相关笔记:

from PIL import Image

from torch.utils.tensorboard import SummaryWriter

from torchvision import transforms



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



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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值