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…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
