Tensorboard以及Transforms初步学习

news2024/11/25 19:30:00

一.前情提要

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.coloradmin.cn/o/1580361.html

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

相关文章

Scala中如何使用Jsoup库处理HTML文档?

在当今互联网时代,数据是互联网应用程序的核心。对于开发者来说,获取并处理数据是日常工作中的重要一环。本文将介绍如何利用Scala中强大的Jsoup库进行网络请求和HTML解析,从而实现爬取京东网站的数据,让我们一起来探索吧&#xf…

云智慧发布对象关系型数据库CloudPanguDB,打破传统技术壁垒

近日,云智慧推出关系型数据库CloudPanguDB(中文名称:盘古数据库),旨在通过高兼容性能和创新技术架构,降低企业项目整体运营成本。 无论是处理海量复杂数据,还是构建清晰有序的数据结构关系&…

c++ 谷歌glog日志库使用

效果如图: 本次使用qt环境演示,相关库文件和头文件下载链接:https://download.csdn.net/download/bangtanhui/89108477 将相关库文件和头文件,丢到工程目录下 然后需要在工程pro文件当中引入库文件和头文件: …

创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

1. 工厂模式的特点 在海贼王中,作为原王下七武海之一的多弗朗明哥,可以说是新世界最大的流氓头子,拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介,控制着世界各地的诸多产业,人造恶魔果实工厂就…

Java Web这一路走来

大部分Java应用都是Web或网络应用,MVC框架在Java框架中有着举足轻重的地位,一开始的Web应用并不现在这样子的,一步一步走来,每一步都经历了无数的血和泪的教训,以史为镜可以知兴替。 1. 草莽时代 早期的Java服务端技…

使用ollydbg还原密码程序的密码

前言:我们上次用ida pro破解了程序密码这次我们换个工具来还原程序密码 第一步 和上次一样把找到的程序拖到ollydbg里面 第二步 右键点击查找所有引用字符串 第三步 找到报错代码双击进入 第五步 找到上面的jnz双击将其改成jz 第六步 将所修改的保存点击空白…

FPGA(Verilog)实现uart传输协议传输数据(含仿真)

目录 实现功能: 1.接收uart串行数据,输出并行数据(1byte)。 2.输入并行数据(1byte),输出uart串行数据。 3.完成uart传输的1次环回。 uart协议的1帧数据传输 模块封装-port设置 Verilog代码实现 1.uart接收模块:接收串行数据,输出并行数…

基于Java+SpringBoot+Vue企业员工管理系统(源码+文档+部署+讲解)

一.系统概述 随着社会的发展,系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息,但各种信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得信息,因此,设计一种安全高效的员工管理系统极为重要。 为设计…

swiftui macOS实现加载本地html文件

import SwiftUI import WebKitstruct ContentView: View {var body: some View {VStack {Text("测试")HTMLView(htmlFileName: "localfile") // 假设你的本地 HTML 文件名为 index.html.frame(minWidth: 100, minHeight: 100) // 设置 HTMLView 的最小尺寸…

【攻防世界】php_rce (ThinkPHP5)

进入题目环境,查看页面信息: 页面提示 ThinkPHP V5,猜测存在ThinkPHP5 版本框架的漏洞,于是查找 ThinkPHP5 的攻击POC。 构造 payload: http://61.147.171.105:50126/?sindex/think\app/invokefunction&functioncall_user_f…

续写Groq

这章写点Groq干货,理性的分析。 首先是Articical Analysis的关于Mixtral8*7B的吞吐比较 上图是有Mixtral 8*7BPaaS服务的AI服务商,Mistral自己居然排倒数第三 ,Groq是真的遥遥领先啊。 另外这个图是比较每100万tokens的cost,无论是推理速度还是cost,Groq都是遥遥领先…

如何把1G多的视频压缩到500兆以内?3个方法轻松减小文件内存~

微信已经成为了我们上班交流沟通时必不可少的通讯工具之一,在使用微信时,常常会遇到系统提示发送的word、ppt、pdf文件、视频、压缩包等文件超过1G,无法发送。有没有什么办法可以缩小文件的体积呢?今天给大家介绍几款可以用于视频…

Python中Python-docx 包的run介绍

先对run做一个简单地介绍。每个paragraph对象都包含一个run对象的列表。举例: 这是一个简短的段落。 from docx import Document doc Document("1.docx") #上面这段话保存在1.docx中 print("这一段的run个数是:",len(doc.paragr…

leetcode热题100.划分字母区间

Problem: 763. 划分字母区间 文章目录 题目思路复杂度Code 题目 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍…

基于Leaflet.js和Turf.js的等值线区间自定义及颜色自适应实践

目录 前言 一、Turf.js等值线相关制作 1、生成方法 2、主要参数 二、实际案例开发 1、新建展示页面 2、等值线生成 3、基于Leaflet的再优化 总结 前言 在气象方面的GIS应用当中,会根据实际的工作需要建立不同的监测站点。气象监测站的主要功能包括&#xff1…

如何快速识别陶瓷件的外观缺陷吗?

陶瓷件由陶瓷材料制成的物品或零部件,通常用于装饰、日常生活用品、工艺品或工业应用。陶瓷是一种非金属材料,具有耐高温、耐磨损、绝缘、化学稳定等特性,因此在许多领域得到广泛应用。 本案针对陶瓷件尺寸长25mm*宽11mm*高2mm的产品的外观检…

物联网实战--驱动篇之(五)TEA和AES加密算法

目录 一、前言 二、TEA算法 三、AES算法 四、加解密测试 五、安全性保障 一、前言 物联网的安全性是经常被提及的一个点,如果你的设备之间通讯没有加密的话,那么攻击者很容易就能获取并解析出报文的协议,从而根据攻击者的需要进行设备操…

运行gitHub中的vue项目,遇到三个报错解决方案

报错1:解决npm run serve启动报错npm ERR Missing script:"serve" 启动项目的时候用npm run serve发现报了以下的错误 npm ERR! Missing script: "serve" npm ERR! npm ERR! To see a list of scripts, run: npm ERR! npm runnpm ERR! A co…

Linux安装Oracle11g(无图形界面下的静默安装)

Oracle11g安装文档-Linux静默安装 环境准备安装数据库配置监听器创建数据库测试打开防火墙 环境准备 创建组和用户 [rootlocalhost ~]# groupadd oinstall #创建oinstall组 [rootlocalhost ~]# groupadd dba  #创建dba组 [rootlocalhost ~]# useradd -g oinstall -G dba -m…

window2003 中cmd提权到system

打开cmd,输入命令: sc Create syscm2 binPath "cmd /K start" type own type interact 注意!等号左边是有空格然后才是引号的,三个等号都是,否则会失败 成功提示:[SC] CreateService 成功 然后…