跟着小土堆学习pytorch(二)——TensorBoard和Transform

文章目录

  • 一、TensorBoard
    • [1.1 add_scalar()](#1.1 add_scalar())
      • [1.1,1 报错:TypeError: MessageToJson() got an unexpected keyword argument 'including_default_value_fields'](#1.1,1 报错:TypeError: MessageToJson() got an unexpected keyword argument 'including_default_value_fields')
      • [1.1.2 图像重叠](#1.1.2 图像重叠)
      • [1.1.3 代码展示](#1.1.3 代码展示)
    • [1.2 add_image()](#1.2 add_image())
      • [1.2.1 代码](#1.2.1 代码)
  • 二、transform
    • [2.1 介绍------对图片进行一些变化](#2.1 介绍——对图片进行一些变化)
    • [2.2 补:查看py文件下(如,transform.py)下的结构](#2.2 补:查看py文件下(如,transform.py)下的结构)
    • [2.3 查找快捷键](#2.3 查找快捷键)
    • [2.4 常用的类](#2.4 常用的类)
    • [2.5 tensor](#2.5 tensor)
    • [2.6 call()](#2.6 call())
    • [2.7 cv2库](#2.7 cv2库)
    • [2.8 代码与效果](#2.8 代码与效果)

一、TensorBoard

主要是用来绘制train/val loss图像(图像现实)

比如,在训练过程的时候看看loss的图像情况,loss就是描述实验数据和真实数据的差距

1.1 add_scalar()

1.1,1 报错:TypeError: MessageToJson() got an unexpected keyword argument 'including_default_value_fields'

这个是由于,tensorboard的版本过高了
pip install tensorboard==2.12.0弄个低版本就行

嗯,数据就生成了

1.1.2 图像重叠

如果重叠了,就是同一个标签下面,会造成图像混合在一起,进行拟合,很乱,需要删除logs下的event事件

1.1.3 代码展示

python 复制代码
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("D:\\pycharm_project\\try3\\math\\logs")

# writer.add_image()

for i in range(100):
    writer.add_scalar("y=x",i,i)

writer.close()

1.2 add_image()

对于img_tensor这个参数,图片格式必须torch.Tensor, numpy.ndarray, or string/blobname

能看清每一步的数据

1.2.1 代码

python 复制代码
from torch.utils.tensorboard import SummaryWriter
from PIL import Image
import numpy as np

writer = SummaryWriter("D:\\pycharm_project\\try3\\math\\logs")
img_path = "D:\\pycharm_project\\try3\\dataset\\train\\bees\\21399619_3e61e5bb6f.jpg"
img_PIL = Image.open(img_path)
img_array = np.array(img_PIL)

print(type(img_array))
print(img_array.shape)

writer.add_image("train",img_array,2,dataformats='HWC')

for i in range(100):
    writer.add_scalar("y=x",i,i)

writer.close()

二、transform

2.1 介绍------对图片进行一些变化

对图片进行一些变化

在torchvision库中,"transform"指的是一系列用于图像预处理和数据增强的操作。这些操作可以改变图像的大小、颜色、对比度等属性,或者对图像进行裁剪、旋转等。

Resize:调整图像的大小。它可以接受一个整数或者一个尺寸序列(高度,宽度)。如果提供整数,图像的较小边将被调整为此数值,同时保持原始宽高比。

CenterCrop:将图像裁剪为给定的尺寸,裁剪操作在图像的中心进行。

RandomCrop:随机裁剪图像的一部分。可以指定裁剪区域的尺寸,以及是否在必要时对图像进行填充。

RandomHorizontalFlip和RandomVerticalFlip:随机水平或垂直翻转图像。这些变换以一定的概率(默认为0.5)应用。

ColorJitter:随机改变图像的亮度、对比度、饱和度和色调。

Grayscale:以一定的概率将图像转换为灰度图像。

RandomRotation:随机旋转图像一个角度,角度范围可以指定。

Normalize:对图像进行标准化处理,即减去均值并除以标准差。这通常在数据预处理的最后阶段进行,以确保模型输入的一致性。

ToTensor:将PIL图像或numpy数组转换为torch.Tensor对象。转换后的张量形状为(C, H, W),其中C是通道数,H是高度,W是宽度。

Compose:将多个变换组合成一个。这是最常用的变换之一,因为它允许你将一系列的预处理步骤串联起来,一次性应用到图像上。

2.2 补:查看py文件下(如,transform.py)下的结构

,这些库,里面的类,很多,想要查看可以组合键Alt+7

下拉之后,双击,可以定位到目标函数

2.3 查找快捷键

setting--->keymap--->structure

2.4 常用的类

compose---几种变换进行组合一起
totensor---变成tensor格式
ToPILImage---变成PILimage格式
Normalize---正则化
CenterCrop---中心裁剪
resize---裁剪/变换

2.5 tensor

  1. transform怎么用
  2. tensor的数据类型

totensor的__call__()

输入图片,返回tensor

python 复制代码
tensor_trans = transforms.ToTensor() # 实例化
tensor_img = tensor_trans(img)       # 调用

tensor数据类型,包装了神经网络所需要的一些理论参数

2.6 call()

call方法可以使对象具有当作函数的功能,当你调用对象,就会自动调用call方法

2.7 cv2库

使用cv2.imread,返回出来的就是ndarry,也能通过totensor转成tensor

Alt+Enter---> 自动导入库

ctrl + p ---> 现实需要输入的参数

2.8 代码与效果

python 复制代码
from PIL import Image
from torch.utils.tensorboard import SummaryWriter

from torchvision import transforms


img_path = "D:\\pycharm_project\\try3\\dataset\\train\\ants\\0013035.jpg"
img = Image.open(img_path)
writer_try = SummaryWriter("D:\\pycharm_project\\try3\\math\\logs")


tensor_trans = transforms.ToTensor() # 实例化
tensor_img = tensor_trans(img)       # 调用

print(tensor_img)

writer_try.add_image("Tensor_img", tensor_img)
writer_try.close()

tensorboard --logdir=D:\pycharm_project\try3\math\logs以后logs文件,我都用绝对地址,不然总是出问题

相关推荐
逻极21 小时前
Scikit-learn 入门指南:从零到一掌握机器学习经典库(2025 最新版)
人工智能·python·机器学习·ai·scikit-learn·agent
草莓熊Lotso21 小时前
C++ 抽象类与多态原理深度解析:从纯虚函数到虚表机制(附高频面试题)
java·运维·服务器·开发语言·c++·人工智能·笔记
XINVRY-FPGA21 小时前
5CEFA9F23I7N Altera CycloneV E(Enhanced)FPGA
人工智能·嵌入式硬件·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
Rock_yzh21 小时前
LeetCode算法刷题——49. 字母异位词分组
数据结构·c++·学习·算法·leetcode·职场和发展·哈希算法
Wayfreem21 小时前
Spring AI Alibaba 学习之最简单的快速入门
人工智能·学习·spring
再玩一会儿看代码21 小时前
Ken的Java学习之路——Java中关于面向对象
java·开发语言·经验分享·python·学习
shayudiandian21 小时前
图像分类深度学习
人工智能
王哈哈^_^21 小时前
【完整源码+数据集】车牌数据集,yolov8车牌检测数据集 7811 张,汽车车牌识别数据集,智慧交通汽车车牌识别系统实战教程
人工智能·深度学习·yolo·目标检测·计算机视觉·毕业设计·智慧城市
IT_陈寒1 天前
JavaScript 性能优化实战:我从 V8 源码中学到的 7 个关键技巧
前端·人工智能·后端
大千AI助手1 天前
决策树悲观错误剪枝(PEP)详解:原理、实现与应用
人工智能·算法·决策树·机器学习·剪枝·大千ai助手·悲观错误剪枝