程序开发 网站开发,长沙做网站seo优化外包,广告设计公司名称推荐,ciid中国室内设计官网一.前情提要
1.本文是代码结合知识点#xff0c;注释即为知识点
2.主要详细讲解Tensorboard以及Transforms代码以及基础知识
3.若想深入学习#xff0c;建议阅读
P3. Python学习中的两大法宝函数#xff08;当然也可以用在PyTorch#xff09;_哔哩哔哩_bilibili 二.简述…一.前情提要
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
writerSummaryWriter(logs)#存储地址 #实例y2x for i in range(100): writer.add_scalar(yx,i,i)
#使用writer对象的add_scalar方法将名为yx的标量数据写入TensorBoard日志。第一个参数是数据的标签或名称第二个参数是数据的值第三个参数是当前循环迭代的步数也可以理解为X轴的值 writer.close()
②
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image writerSummaryWriter(logs) #指定图片位置
image_pathrhymenoptera_data\train\ants\0013035.jpg
#打开文件
img_PILImage.open(image_path)
#将图片文件转化为numpy格式
img_arraynp.array(img_PIL)
#HWC是nupy格式下的数据位置需要调整
writer.add_image(test,img_array,1,dataformatsHWC) 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 rD:\CODE\code2\important note\0013035.jpg
imgImage.open(img_path_abs) writerSummaryWriter(logs) #1.了解transforms如何被使用
tensor_transtransforms.ToTensor()
tensor_imgtensor_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:路径的相关笔记 writerSummaryWriter(logs)
#使用PIL库中的open()函数打开一个图像文件需要在括号内填入图像的路径
imgImage.open()
print(img)#格式是PIL与张量tensor形式不一样 #创建一个transforms模块中的ToTensor对象用于将图像转换为张量tensor形式
trans_totensortransforms.ToTensor
#使用ToTensor对象的__call__()方法将图像转换为张量形式存储在img_tensor变量中
img_tensortrans_totensor(img)
#将转换后的张量图像添加到TensorBoard中第一个参数是显示名称第二个参数是图像张量
writer.add_image(Totensor,img_tensor) #打印张量图像的第一个像素点的值即红色通道的值
print(img_tensor[0][0][0])
#创建一个transforms模块中的Normalize对象用于对张量图像进行归一化处理
trans_normtransforms.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_normtrans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image(Normalize,img_norm,2) #Resize方式裁剪(512,512)是裁剪的大小
print(img.size)
#这个操作不是简单地缩放图像而是通过裁剪和缩放来实现
trans_resizetransforms.Resize((512,512))
#PIL格式裁剪后仍是PIL格式
img_resizetrans_resize(img)
#PIL-totensor-tensor
img_resizetrans_totensor(img_resize)
writer.add_image(Resize,img_resize,0)
print(img_resize) #Compose-resize-2
trans_resize_2transforms.Resize(512)
#PIL-PIL-tensor,图像首先被调整为最小边长为512的正方形然后转换为Tensor格式。这个复合操作被称为trans_compose
trans_composetransforms.Compose([trans_resize_2,trans_totensor])
for i in range(10): img_croptrans_compose(img) writer.add_image(RandomCrop,img_crop,i)
writer.close()
三.结语
1.Tensorboard以及Transforms是学习pytorch不可或缺的基础
如果不知道怎么安装pytorch博主另一篇博客详细解答了如何安装pytorch