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 | 对数据进行标准化处理 | 实例化: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
相关文章:
pytorch快速入门(一)—— 基本工具及平台介绍
前言 该pytorch学习笔记应该配合b站小土堆的《pytorch深度学习快速入门教程》使用 环境配置:Anaconda Python编译器:pycharm、jupyter 两大法宝函数 dir():知道包中有什么东西(函数 / 属性..…...

『功能项目』怪物的有限状态机【42】
本章项目成果展示 我们打开上一篇41项目优化 - 框架加载资源的项目, 本章要做的事情是按照框架的思想构建项目并完成怪物的自动巡逻状态,当主角靠近怪物时,怪物会朝向主角释放技能 首先新建脚本:BossCtrl.cs (通常把xxxCtrl.cs脚…...

【C++】模板进阶:深入解析模板特化
C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与Queue 本章将…...

Python数据分析-世界上最富有的1000人
一、研究背景 随着全球化的加速发展和技术的进步,财富分配问题日益成为全球关注的焦点。财富的不平等现象日益明显,少数极富有的个人掌握了全球大部分的财富资源。了解全球最富有个人的财富分布及其背后的行业和国家因素,对于分析全球经济趋…...
CSS中隐藏滚动条的同时保留滚动功能
在CSS中,我们可以通过一些技巧来隐藏滚动条,同时保留滚动功能。以下是几种常用的方法和具体的实现步骤。 1. 使用 overflow 和 ::-webkit-scrollbar 这种方法适用于大多数现代浏览器。通过设置 overflow 属性启用滚动,同时利用 ::-webkit-s…...

我的标志:奇特的头像
<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>与妖为邻</title><style>figu…...

中国空间计算产业链发展分析
2024中国空间计算产业链拆解 空间计算设备主要包括AR、VR、MR等终端设备。VR设备通常包括头戴式显示器(VR头盔)、手柄或追踪器等组件,用以完全封闭用户视野,营造虚拟环境体验。这些设备配备高分辨率显示屏、内置传感器和跟踪器。 …...

DAY14信息打点-JS 架构框架识别泄漏提取API 接口枚举FUZZ 爬虫插件项目
本课意义: 1.如何从表现中的JS提取价值信息 2.如何从地址中FUZZ提取未知的JS文件 3.如何从JS开放框架WebPack进行测试 一、JS 前端架构-识别&分析 在JS中寻找更多的URL地址,在JS代码逻辑(加密算法、APIKey配置、验证逻辑)中进…...

TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错
目录 1,前言2,二者关系2.1,使用 3,遇到的问题3.1,TS 中使用 JS 1,前言 通过 Vite 创建的 Vue3 TS 项目,根目录下会有 tsconfig.json 和 tsconfig.node.json 文件,并且存在引用关系…...

revisiting拉普拉斯模板
二维向量的二阶微分是Hessian矩阵,拉普拉斯算子是将两个独立的二阶微分求和,对二阶微分的近似。 我不认同冈萨雷斯的8邻域拉普拉斯模板。 MATLAB图像处理工具箱中fspecial函数’laplacian’参数给的拉普拉斯模板: 对于数字滤波器ÿ…...

深入分析计算机网络性能指标
速率带宽吞吐量时延时延带宽积往返时间RTT利用率丢包率图书推荐内容简介作者简介 速率 连接在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或数据率。 基本单位:bit/s(b/s、bps) 常用单位:kb/s&#x…...

pyflink 安装和测试
FPY Warning! 安装 apache-Flink # pip install apache-Flink -i https://pypi.tuna.tsinghua.edu.cn/simple/ Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/ Collecting apache-FlinkDownloading https://pypi.tuna.tsinghua.edu.cn/packages/7f/a3/ad502…...
《网络故障处理案例:公司网络突然中断》
网络故障处理案例:公司网络突然中断 一、故障背景 某工作日上午,一家拥有 500 名员工的公司突然出现整个网络中断的情况。员工们无法访问互联网、内部服务器和共享文件,严重影响了工作效率。 二、故障现象 1. 所有员工的电脑…...
JavaSE:9、数组
1、一维数组 初始化 import com.test.*;public class Main {public static void main(String [] argv){int a[]{1,2};int b[]new int[]{1,0,2};// int b[]new int[3]{1,2,3}; ERROR 要么指定长度要么大括号里初始化数据算长度int[] c{1,2};int d[]new int[10];} }基本类型…...

【裸机装机系列】2.kali(ubuntu)-裸机安装kali并进行磁盘分区-2024.9最新
【前言】 2024年为什么弃用ubuntu,请参考我写的另一篇博文:为什么不用ubuntu,而选择基于debian的kali操作系统-2024.9最新 【镜像下载】 1、镜像下载地址 https://www.kali.org/get-kali/选择installer-image,进入界面下载相应的ISO文件 我…...

解决:Vue 中 debugger 不生效
目录 1,问题2,解决2.1,修改 webpack 配置2.2,修改浏览器设置 1,问题 在 Vue 项目中,可以使用 debugger 在浏览器中开启调试。但有时却不生效。 2,解决 2.1,修改 webpack 配置 通…...

Mac笔记本上查看/user/目录下的文件的几种方法
在Mac笔记本上查看/user/下的文件,可以通过多种方法实现。以下是一些常见的方法: 一、使用Finder 打开Finder:点击Dock栏中的Finder图标,或者使用快捷键Command F。 导航到用户目录: 在Finder的菜单栏中࿰…...
工程师 - ACPI和ACPICA的区别
ACPI(高级配置和电源接口)和 ACPICA(ACPI 组件架构)密切相关,但在系统电源管理和配置方面却有不同的作用。以下是它们的区别: ACPI(高级配置和电源接口) - 定义: ACPI 是…...
一文快速上手-create-vue脚手架
文章目录 初识 create-vuecreate-vue新建项目Vue.js 3 项目目录结构项目的运行和打包vite.config.js文件解析其他:webpack和Vite的区别 初识 create-vue create-vue类似于Vue CLI脚手架,可以快速创建vuejs 3项目,create-vue基于Vite。Vite支…...
笔记整理—内核!启动!—kernel部分(7)rcs文件和登录部分与密码解析
该文件的位置在/etc/init.d/rcs,前文说过这个是一个配置文件,最开始的地方首先就是PATH相关的用export导出相关的PATH做环境变量,将可执行路径导为PATH执行时就不用写全路径了,该位置的PATH路径导出了/bin、/sbin、/usr/bin、/usr…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...