pytorch快速入门(一)—— 基本工具及平台介绍

前言

        该pytorch学习笔记应该配合b站小土堆《pytorch深度学习快速入门教程》使用

        环境配置:Anaconda             Python编译器:pycharm、jupyter 

                 

  • 两大法宝函数

           dir():知道包中有什么东西(函数 / 属性...)

           help():查看函数的使用说明

1. Dataset类代码实战

from torch.utils.data import Dataset
from PIL import Image #PIL 图像处理第三方库pillow
import os# 创建类
class MyData(Dataset):# __init__ 创建对象时自动调用 用于初始化对象属性def __init__(self,label,path):   #实例方法,默认第一个参数self需要接收到一个实例self.label = labelself.path = path #私有属性公有化(路径)self.img_path = os.listdir(self.path) #获取所有列表地址# __getitem__ 对实例对象 根据index进行索引def __getitem__(self, idx):img_name = self.img_path[idx]img_item_path = os.path.join(self.path,img_name) #路径拼接img = Image.open(img_item_path) #获取对应图像信息label = self.labelreturn img,label# 返回列表长度def __len__(self):return len(self.img_path)# 创建实例
ants_dataset = MyData("ants",r"D:\python code\pythonProject\dataset\train\ants")
len(ants_dataset)
img,label = ants_dataset[5]
img.show()bees_dataset = MyData("bees",r"D:\python code\pythonProject\dataset\train\bees")# 拼接数据集
train_dataset = ants_dataset + bees_dataset
len(train_dataset)

 2.Tensorboard

       TensorBoard 是一组用于数据可视化的工具 

  • TensorBoard的使用

        主要是使用SummaryWriter类中的 .add_image(图片可视化) 以及 .add_scalar(数据可视化)方法,一般来说,只接受tensor或numpy类型的图像数据

from tensorboardX import SummaryWriter  #导入类########## .add_scalar数据可视化 ############
writer = SummaryWriter("logs") #创建实例 logs为文件名for i in range(100):writer.add_scalar("y=2x",2*i,i)writer.close()########### .add_image图像可视化  ###########writer = SummaryWriter("logs")writer.add_image(标题,tensor或numpy数据)writer.close()

3.Transforms

 3.1 Tensor数据类型的意义

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

 3.2 常见的transform工具

  • transform如何使用

        transform是一个工具箱,里面有很多 类(如ToTensor、resize),一般我们根据类去实例化出具体的对象,然后再利用__call__函数,将对象当作函数调用

    3.2.1 数据类型转换

             ToTensor:将numpy或PIL Image类型的图片 转化为 tensor类型 

             ToPILImage:将tensor或numpy数据类型 转化为 PIL Image类型

from torchvision import transforms
from PIL import Image
img_path = r"D:\python code\pythonProject\dataset\train\ants\0013035.jpg"
img = Image.open(img_path)
print(img)# 将PIL Image类型(图片)转化为tensor
tensor_trans = transforms.ToTensor() # 创建实例(工具)
tensor_img = tensor_trans(img)       # 利用call内置方法 像函数一样调用实例(使用工具)

   3.2.2  其他

  • 注意事项:1.关注输入输出类型       2.学会看官方文档(按住CTRL点相应函数)
方法transform工具说明input
归一化Normalize

对数据进行标准化处理        output = \frac{input - mean}{std}

实例化:mean std列表

调用:tensor类型

规格调整 Resize调整输入图片的规格(大小)

实例化:序列

调用:PIL类型

组合Compose

将多个transforms变换组合在一起,

并按照顺序执行

实例化:

含transform的list

随机裁剪RandomCrop

根据给定规格随机裁剪图片

实例化:序列

  • 代码示例
from PIL import Image
from torchvision import transforms
from tensorboardX import SummaryWriterwriter = SummaryWriter("logs")
img = Image.open(r"D:\python code\pythonProject\image\OIP-C.jpg")
print(img)# ToTensor
trans_tensor = transforms.ToTensor()
tensor_img = trans_tensor(img)writer.add_image("ToTensor",tensor_img) #用Tensorboard可视化# Normalize 归一化
print(tensor_img[0],[0],[0]) #归一化之前
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) #图片为RGB三通道,所以三个均值,三个标准差
norm_img = trans_norm(tensor_img)
print(tensor_img[0],[0],[0]) #归一化之后writer.add_image("Normalize",norm_img) #用Tensorboard可视化# Resize 调整规格
print(img.size) #img为PIL数据类型
trans_resize = transforms.Resize((512,512))# 将size调整为512*512
resize_img = trans_resize(img) # resize_img为PIL数据类型
print(resize_img)
resize_img = trans_tensor(resize_img) # resize_img转换为tensor数据类型
writer.add_image("Resize",resize_img,0)# Compose 组合
trans_resize2 = transforms.Resize((256,1024)) #调整规格
trans_compose = transforms.Compose([trans_tensor,trans_resize2]) #先转换数据类型 再调整规格
compose_img = trans_compose(img) #调用实例
writer.add_image("Compose",compose_img,1)# RondomCrop 随机裁剪
trans_random = transforms.RandomCrop(100)
trans_compose2 = transforms.Compose([trans_random,trans_tensor])
for i in range(10):randomcrop_img = trans_compose2(img)writer.add_image("RandomCrop",randomcrop_img,i)writer.close()
#最后在下方终端输入 tensorboard --logdir=文件名(logs) 即可打开tensorboard

4.torchvision中的数据集

    torchvision专门用于处理图像,其主要包含三个部分:model包(提供了训练好的模型)、dataset包(提供大量数据集)、transform包(对Tensor或PIL image图像进行转换处理)

  • dataset中的内置数据集使用 —— 以CIFAR-10数据集为例

CIFAR-10数据集:

         由 10 个类的 60000 张 32x32 彩色图像组成,每个类有 6000 张图像。

         有 50000 张训练图像和 10000 张测试图像。

 注:图像.show()   只能对PIL图像使用,如果是含PIL和其它参数的元组,无法使用

  • 代码示例 

        在 torchvision.datasets.CIFAR10()的参数中可以直接选用设定好的transform工具,直接导入处理好的数据

import torchvision
from tensorboardX import SummaryWriter# 与transforms进行联动
dataset_transfrom = torchvision.transforms.Compose([torchvision.transforms.ToTensor(),torchvision.transforms.Resize(128)]) #先Tensor 后调整大小# 导入数据集 —— 训练集与测试集(注意后面的参数)
train_set = torchvision.datasets.CIFAR10(root=r"D:\python code\pythonProject\dataset",train = True,download=True,transform=dataset_transfrom)
test_set = torchvision.datasets.CIFAR10(root=r"D:\python code\pythonProject\dataset",train = False,download=True,transform=dataset_transfrom)writer = SummaryWriter("logs2")
for i in range(10):img,target = test_set[i] #等号后 为 含tensor图像信息和图像标签target的元组writer.add_image("torchvision",img,i)writer.close() #!!!不要忘记关闭读写

5.dataloader的使用

简介:

        Dataloader是一个数据读取机制,它由数据集(dataset)和采样器(sampler)两个模块组成。主要是根据sampler提供的索引在dataset中读取数据。

        Dataloader的主要目的是将数据分批读取计算,节省显存

  • 示例
import torchvision
from torch.utils.data import DataLoader
from tensorboardX import SummaryWriter#准备测试的数据集(主要是说明数据集的位置)
test_data = torchvision.datasets.CIFAR10(root=r"D:\python code\pythonProject\dataset",train=False,transform=torchvision.transforms.ToTensor())# batch_size:每次抽出多少样本     shuffle:是否打乱样本顺序
test_loader = DataLoader(dataset=test_data,batch_size=64,shuffle=True,num_workers=0)# 查看每次抽取出的样本
writer = SummaryWriter("dataloader")
step = 0
for data in test_loader:imgs,targets = datawriter.add_images("test_data",imgs,step)step = step + 1writer.close()
#最后在下方终端输入 tensorboard --logdir=文件名 即可打开tensorboard

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

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

相关文章

YOLOv5:TensorRT模型加速与部署(wts版)

视频链接:YOLOv5:TensorRT模型加速与部署(wts版)_哔哩哔哩_bilibili 《YOLOv5:TensorRT模型加速与部署(wts版)》课程致力于帮助学生实战YOLOv5目标检测算法的TensorRT加速部署。常心老师将手把…

只需一键,AI Manga Translator 帮你解锁多国语言漫画

只需一键,AI Manga Translator 帮你解锁多国语言漫画 翻译漫画从未如此简单,AI Manga Translator Chrome 扩展程序让你只需点击几下,就能将生肉漫画翻译成你熟悉的语言。本文将带你了解这款工具的基本功能、使用方法,以及为什么你…

方案分享:我是怎么解决一个电力采集问题的?

一、整体解决方案 合宙DTU整体解决方案 DTU硬件&固件SIM卡业务云平台APP&小程序&web h5页面看板; 合宙提供的DTU整体解决方案,核心亮点如下: 品质有保障,硬件DTU固件经过市场上几千家的DTU客户长达5年时间的验证&…

音频芯片DP7344兼容CS4344低成本方案双通道24位DA转换器

产品简介 DP7344 是一款完整的 2 通道输出数模转换芯片,内含插值滤波器、Multi-Bit 数模转换器、输出模拟滤波器,并支持大部分的音频数据格式。 DP7344 基于一个带线性模拟低通滤波器的四阶 Multi-BitΔ∑调制器,自动检测信号频率和主时钟频率…

无人机飞手教员组装、调试高级教学详解

随着无人机技术的飞速发展,其在航拍、农业、救援、监测等多个领域的应用日益广泛,对专业无人机飞手的需求也随之增加。作为无人机飞手教员,掌握无人机的高级组装、调试技能不仅是教学的基础,更是培养学生成为行业精英的关键。本教…

C# System.BadImageFormatException问题及解决

C# System.BadImageFormatException问题 出现System.BadImageFormatException 异常有两种情况:程序目标平台不一致&引用dll文件的系统平台不一致。 异常参考 BadImageFormatException 程序目标平台不一致: 项目>属性>生成:x86 …

在 Java 中实现 Kafka Producer 的单例模式

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

【UE5】使用2DFlipbook图作为体积纹理,实现实时绘制体积纹理

这是一篇对“Creating a Volumetric Ray Marcher-Shader Bits”的学习心得 文章时间很早,因此这里针对UE5对原文做出兼容性修正(为避免累赘不做出注明。链接如上,有需要自行学习) 以及最后对Custom做可能的蓝图移植,做…

无人机在战争方面的应用!!!

01 侦察与监视 无人机能够进行长时间的侦察和监视,为指挥官提供实时的战场情报,是现代战争中不可或缺的“眼睛”。它们可以飞越敌方领空,收集情报,为军事决策提供关键信息。 02 精确打击 携带精确制导武器的无人机能够对敌方的…

Leetcode 516. 最长回文序列 区间dp C++实现

Leetcode 516. 最长回文序列 问题:给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 算法1&#xff1a…

检查一个复数C的实部a和虚部b是否都是有限数值即a和b都不是无限数值、空值cmath.isfinite(x)

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 检查一个复数C的实部a和虚部b 是否都是有限数值 即a和b都不是无限数值、空值 cmath.isfinite(x) [太阳]选择题 根据给定的Python代码,哪个选项是错误的? import cma…

Ubuntu 20.04 解决 nvidia-smi 出错问题

目录 一、初始问题 二、解决方法 2.1 法一 2.2 法二 三、新的问题 3.1 解决方案 3.2 进一步解决 3.3 最后解决 一、初始问题 今天要在本机上装个环境时,运行了一下 nvidia-smi 突然遇到一个问题: Failed to initialize NVML: Driver/library ver…

文件格式转换:EXCEL和CSV文件格式互相转换

目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下:1.3csv转换为excel代码如下:由于excel文件在数学建模数据处理当中的局限性,我们通常把excel文件转换为csv文件来处理,下面是相关的代码,我直接封装成函数,你们直接调用即可,我会添…

R语言进行无序多分类Logistic回归

在临床研究中,接触最多的是二分类数据,如淋巴癌是否转移,是否死亡,这些因变量最后都可以转换成二分类0与1的问题。然后建立二元logistic回归方程,可以得到影响因素的OR值。但有时我们也会接触到多分类结局数据&#xf…

C++:类和对象全解

C:类和对象全解 一、类的定义和初始化(一)类的定义1、类的成员变量(1)成员变量(2)成员函数 2、实例化对象(1)采用普通构造函数(2)采用初始化列表 …

【鸿蒙开发 day12】

鸿蒙开发-布局进阶 一.定位1.绝对定位2.相对定位3.定位案例-VIP 二.Z序控制三.层叠布局四.bilibili卡片案例五.list列表容器组件滚动条状态列表分割线 六.通用属性七.动画八.图形变换1.平移2.定位结合平移实现精准定位3.旋转和缩放 九.总结 一.定位 作用:改变组件位…

MOS管和三极管有什么区别?

MOS管是基于金属-氧化物-半导体结构的场效应晶体管,它的控制电压作用于氧化物层,通过调节栅极电势来控制源漏电流。MOS管是FET中的一种,现主要用增强型MOS管,分为PMOS和NMOS。 MOS管的三个极分别是G(栅极),D(漏极)&…

PCL 点云基于高程渲染颜色

目录 一、概述 1.1原理 1.2实现步骤 1.3 应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 本文将介绍如何使用PCL库…

[通信原理]绪论2:信息量 × 信息熵

我们知道信息是一个抽象的概念,它既不是物质也不是能量。那么我们要如何对一个抽象的概念进行一个定量的研究呢? 信息量 1、信息的度量 通信的本质是传递信息,为了定量表征信息的度量,引入信息量的概念。消息中所含信息量与其不…

AIGC-初体验

线性分类 提问,目的试图让AI自动线性分类 A类:(10,21),(3,7),(9,20)(121,242) B类:(3,9),(5,11),(70,212),(11,34) 根据线性关系分类 请问 (100,300),(100,201&#xff…