PyTorch深度学习快速入门

news/发布时间2024/9/20 7:58:38

PyTorch深度学习快速入门

  • 1.PyTorch环境配置及安装
  • 2.python编辑器的选择、安装、配置(pycharm、JupyTer安装)
  • 3.为什么torch.cuda.is_available()返回false
  • 4.python学习中两大法宝函数(也可用在pytorch)
  • 5.pycharm和jupyter(究bi特)使用及对比
  • 6.pytorch加载数据初认识
  • 7.dataset类代码实战
  • 8.TensorBoard的使用(一)
  • 9.TensorBoard的使用(二)
  • 10.Transforms的使用(一)
  • 11.Transforms的使用(二)
  • 12.常见的Transforms(一)
  • 13.常见的Transforms(二)
  • 14.torchvision中的数据集的使用
  • 15.DataLoader的使用

1.PyTorch环境配置及安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
https://repo.anaconda.com/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在开始菜单打开Anaconda prompt
在命令行窗口看见base就是安装成功
在这里插入图片描述
在这里插入图片描述
我们要检查显卡的驱动是否正确安装
在这里插入图片描述
看到GPU正常显示型号,则显卡驱动已经正确安装了
在这里插入图片描述
在正确安装pytorch之前
我们要学会如何正确管理环境
因为我们之后在不同的项目、代码需要的环境是不一样的
有的代码需要pytorch0.4、有的需要1.0
conda create -n pytorch python=3.6
在这里插入图片描述
在这里插入图片描述

n表示name的意思,pytorch就是这个环境的名字
python=3表示要安装的包
在这里插入图片描述
在这里插入图片描述
conda activate pytorch用来激活这个环境
左边括号里面的就是环境的名称
在这里插入图片描述

pip list用来查看环境中有哪些工具包
在这里插入图片描述
但其中没有我们需要的pytorch
下面我们开始安装pytorch

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们需要知道自己GPU的型号

在这里插入图片描述
在这里插入图片描述
没有显卡 CUDA选择None

在这里插入图片描述
在这里插入图片描述

conda9.2以上要确保我们的驱动版本大于396.26
我们要先查询一下自己的驱动版本nvidia-smi
在这里插入图片描述

在这里插入图片描述
conda install pytorch torchvision cudatoolkit=9.2 -c pytorch -c defaults -c numba/label/dev

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用python
import torch
观察pytorch是否安装成功
在这里插入图片描述

使用torch.cuda.is_available()这个命令观察是否可以使用GPU
在这里插入图片描述
显示false是因为cuda下错版本了,要与自己的电脑对应起来
比如我的
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

在这里插入图片描述

3060最低要11.1的cuda

2.python编辑器的选择、安装、配置(pycharm、JupyTer安装)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择地址和环境
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面检测一下pycharm是否成功导入了conda的运行环境
torch.cuda.is_available()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
jupyter是默认安装在外面的base环境中的
但我们的base环境是没有安装pytorch的
所以这个jupyter无法使用pytorch
我们可以在base环境中安装pytorch或者在pytorch环境中安装jupyter
我们使用第二种方法
先进入pytorch环境
conda activate pytorch
在这里插入图片描述
我的pytorch环境中没有
在这里插入图片描述

使用conda install nb_conda安装
在这里插入图片描述
在这里插入图片描述

安装完成后输入jupyter notebook
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
http://localhost:8888/?token=f0d9cb3f4543dceeb4737d957381b4c3ab37070ce474b819

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
点击shift+回车运行代码块
torch.cuda.is_available()

如果是中文用户名可能会运行不了
在环境变量下做如下修改
在这里插入图片描述

%systemroot%\TEMP
在这里插入图片描述
%USERPROFILE%\AppData\Local\Temp

在这里插入图片描述
在这里插入图片描述

3.为什么torch.cuda.is_available()返回false

在这里插入图片描述
在这里插入图片描述

4.python学习中两大法宝函数(也可用在pytorch)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输出只有一行的,可以点击此刻页面最左侧第2列第一个按钮“Soft-warp”

在这里插入图片描述
查看torch.cuda
我们可以看见之前用的is.available
在这里插入图片描述
在这里插入图片描述
有_表示它是一个函数
在这里插入图片描述

5.pycharm和jupyter(究bi特)使用及对比

首先是pycharm
在这里插入图片描述
在这里插入图片描述
如何确定这个文件使用的是我们的pytorch的cuda环境呢
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建一个python文件
在这里插入图片描述
如何运行这个文件
我们要添加相应的python解释器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击确定就OK了

在这里插入图片描述
在这里插入图片描述

我们也可以直接在python控制台
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在里面创建一个新的文件
先选择相应的环境
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.pytorch加载数据初认识

在这里插入图片描述
https://pan.baidu.com/s/1jZoTmoFzaTLWh4lKBHVbEA 密码: 5suq
可以下载一下数据集
在这里插入图片描述
这个数据集分为train(训练数据集)和val(验证数据集)

下面是train
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这是一个识别蚂蚁和蜜蜂对他进行二分类的一个数据集
其中ants和bees这两个文件的名称就是label

还有其他的形式
在这里插入图片描述
告诉我们训练的图片是什么样子
在这里插入图片描述
告诉我们训练的label是什么样子
在这里插入图片描述
在这里插入图片描述

或者我们也可以将label直接写在图片名称上面

下面说明如何使用dataset类
在这里插入图片描述
或者

在这里插入图片描述
在这里插入图片描述

7.dataset类代码实战

在这里插入图片描述

使用控制台进行一个调试
在这里插入图片描述
在这里插入图片描述
将数据集放到项目中,并且重命名为dataset
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们要获取图片的地址
根据def getitem(self, idx):中的idx这个索引去获取
先去获取所有图片地址的一个列表
使用OS去获取
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
上面我们就是获得了所有图片的地址

下面我们要获取每一个图片
在这里插入图片描述

下面考虑这个数据有多长
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果我们想要获取蜜蜂的数据集
在这里插入图片描述
我们训练数据集就是这两个数据集的一个集合
在这里插入图片描述如果我们将数据集进行另外一种形式的表达
在这里插入图片描述
每一张图片对应的label

在这里插入图片描述

8.TensorBoard的使用(一)

在这里插入图片描述
tranform可以我们的图像统一到同一个尺寸
或者对图像中的每一个数据进行一个类的转换

在这里插入图片描述
我们一般想知道我们的训练过程中的loss是如何变化的
通过这个loss知道我们的训练过程是否安装我们预想的变化
我们也可以从相应的loss中去看一下我们选择什么样的模型

在这里插入图片描述
上面这个图就是在外面的2974步输入的图像

这个TensorBoard可以帮助我们探究一些模型在不同的阶段是如何输出的

在这里插入图片描述
首先打开项目文件夹,设置环境
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看如何使用
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
tag就是图表的title
在这里插入图片描述
scalar_value是我们对应的数值,y轴

global_step是我们训练到多少步,x轴

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
我们没有还没有安装tensorboard这个包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果在一台服务器上有好几个人训练
可能端口会冲突
我们可以指定一下这个端口
tensorboard --logdir=logs
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
write写入一个新的事件当中
其实也进入了上一个事件当中
就会出现上面的情况

第一种方法
我们可以将对应的logs下面的文件全部删除
在这里插入图片描述
在这里插入图片描述

第二种方法
在这里插入图片描述

9.TensorBoard的使用(二)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
其中的img_tensor要么是torch_tensor型,要么是numpy.array型。。。
在这里插入图片描述
在这里插入图片描述
我们这边的图片类型是不满足要求的

我们安装一下opencv
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
转换为numpy型

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.Transforms的使用(一)

在这里插入图片描述
transforms主要用来对图片进行一些变换
在这里插入图片描述
在这里插入图片描述
左边的structure可以看它的结构
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们上面就是将img类型的图片转换为我们tensor类型的一个图片
在这里插入图片描述
在这里插入图片描述

11.Transforms的使用(二)

我们为什么需要tensor这个数据类型
在这里插入图片描述
tensor包装了我们神经网络所需要的一些参数
我们在神经网络中一般先把数据转化为tensor型,然后进行一些训练
在这里插入图片描述

在这里插入图片描述
我们上面学习了PIL Image类型的读取
那么如何读取numpy类型的呢
最常用的就是使用opencv

我们安装一下OpenCV

pip install opencv-python( conda install py-opencv)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.常见的Transforms(一)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
compose是将图片进行一个中心的裁剪然后转换为tensor
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

_ _ cal l_ _ 可以直接调用

在这里插入图片描述

在这里插入图片描述
输入必须是一个PIL Image或者numpy类型转换为一个tensor类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
归一化
输入必须是一个tensor类型
用平均值和标准差对张量图像进行归一化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入的img_tensor有三个通道,人为设置均值和标准差都是0.5,
然后利用公式算的输出值img_norm

在这里插入图片描述
下面就是我们归一化后的一个结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般图像多少RGB,三通道

在这里插入图片描述

13.常见的Transforms(二)

在这里插入图片描述

输入是PIL Image类型
在这里插入图片描述
在这里插入图片描述
尺寸由原来的3200 * 3200 变为 512 * 512
输出的是PIL Image类型
如果我们想要在tensorboard进行显示的话
我们要将img_resize变为totensor的一个数据类型
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当你对一个图像应用trans_compose变换时,它首先会使用trans_resize_2进行尺寸调整,然后使用trans_totensor将PIL图像转换为PyTorch的Tensor。

这个参数是个列表
其实就是将resize变换和totensor合并了
所以列表两个参数代表这两个过程合并。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面我们看另外一个方法
随机裁剪
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.torchvision中的数据集的使用

介绍如何将数据集和我们的transforms结合在一起
在科研当中一些标准的数据集如何去下载、组织、查看、使用
在这里插入图片描述
下面是官网提供的数据集
在这里插入图片描述

比如其中的CIFAR10数据集一般用于物体识别
在这里插入图片描述

root表示数据集在什么位置
train为true的话表示为训练集、false表示为测试集
transform表示我们想对训练的数据集进行一个什么样的变化
target_transform表示对target进行一个transform
download如果为true的话,会从网上自动给我们下载这个数据集

在这里插入图片描述
torchvision.models中会提供一些预训练好的神经网络模块
在这里插入图片描述

介绍如何将数据集和我们的transforms结合在一起

在这里插入图片描述
这里会在我们的文件夹下创建dataset,并且下载CIFR10数据集到其中
在这里插入图片描述
在这里插入图片描述
前面是我们的输入图片
后面是我们的target类别,这里将我们的真实类别表示为一个数字3
如果target为0,就是airplane
在这里插入图片描述

在这里插入图片描述

如果我们想要看一下这个图片
在这里插入图片描述
在这里插入图片描述

下面介绍一下CIFAR10这个数据集
6万张32 * 32像素的彩色图片,且分为10个类别
5w训练,1w测试
在这里插入图片描述
下面和我们的transform进行联动
因为我们的原始图片是PIL Image
如果要给我们的pytorch进行使用,需要转为tensor数据类型
这里我们就使用transform

在这里插入图片描述
这里就是一个tensor数据类型
我们也可以使用我们的tensorboard进行一个显示
比如我们想显示测试数据集中的前10张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们下载数据集的时候,可以直接在迅雷上使用URL链接进行下载
在这里插入图片描述
在这里插入图片描述

15.DataLoader的使用

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

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

基于java+springboot动物检疫信息管理系统设计和实现

基于java SSM springboot动物检疫信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

太实用了!微信自动回复神器,助你轻松社交

在当今社交网络的时代,微信已经成为了一种重要的社交工具,为了更有效地管理微信号和提高社交效率,许多人开始使用微信管理系统,下面就一起来看看它的优势吧。 首先,使用微信管理系统可以实现多个微信号同时登陆&#…

input输入框过滤非金额内容保留一个小数点和2位小数

这篇是输入框过滤非金额内容保留一个小数点和2位小数,金额的其他格式化可以看这篇文章常用的金额数字的格式化方法 js方法直接使用 该方式可以直接使用过滤内容,也可以到onInput或onblur等地方过滤,自行使用 /*** 非金额字符格式化处理* p…

好的测试数据管理,到底要怎么做?

你的组织是否实施了测试数据管理?如果你的组织处理关键或敏感的业务数据,测试数据管理肯定会让组织受益。与测试数据相关的问题占所有软件缺陷的 15%,这一事实强调了测试数据的重要性。本文将准确讨论测试数据经理职责、测试数据经理需要什么…

性能测试-反编译jar

方法一,使用jd-gui 1、官网下载:Java Decompiler 2、下载mac版本后,解压,如下所示: 双击 JD_GUI,提示错误,如下所示: 已经安装了java 17,是java 1.8以上版本&#xff0…

kali linux通过aircrack-ng命令破解wifi密码

相关阅读:如何破解攻击WiFi 百度安全验证https://baijiahao.baidu.com/s?id1764248756021219497&wfrspider&forpc上面2篇文章写得都很不错 一、前期准备工作 1、将无线网卡挂载到Kali上 ​ 将无线网卡插到电脑上,如果弹出检测到新的USB设备&…

springboot223基于springboot的信息技术知识竞赛系统的设计与实现

信息技术知识赛系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装信息技术知识赛系统软件来发…

【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train

Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型(Self-supervised Learning),也叫基石模型(foundation modle)。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…

12.整数转罗马数字

题目:罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X II 。 27 写做 XXVII, 即为 XX…

「算法」常见位运算总结

位运算符 异或 按位异或可以实现无进位相加,所谓无进位相加,就是在不考虑进位的情况下将两个数相加(后面有道题需要用到这种操作) 异或的运算律 ①a ^ 0 a ②a ^ a 0 ③a ^ b ^ c a ^ ( b ^ c ) 有符号右移>> 将一个…

Linux上搭建并使用ffmpeg(Java)

关于MacOs和Windows系统上使用ffmpeg就不多说了,有很多相关文章,今天给大家分享一个在Linux环境下使用Java语言来使用ffmpeg 一、首先去官网下载一个Linux对应的ffmpeg包 1、进入ffmpeg官网:官网 2、点击左侧导航栏Download 3、选择Linux对…

react-JSX基本使用

1.目标 能够知道什么是JSX 能够使用JSX创建React元素 能够在JSX中使用JS表达式 能够使用JSX的条件渲染和列表渲染 能够给JSX添加样式 2.目录 JSX的基本使用 JSX中使用JS表达式 JSX的条件渲染 JSX的列表渲染 JSX的样式处理 3.JSX的基本使用 3.1 createElement()的问题 A. …

金融短信群发平台具有那些特点

金融短信群发平台的特点主要包括以下几个方面: 1.高效性:金融短信群发平台能够快速地发送大量的短信,使得金融信息能够迅速传达给目标客户,保证了信息的及时性和有效性。 2.安全性:金融短信群发平台对于信息的安全性非…

蓝桥杯 信号覆盖

遍历每一个坐标轴上的点&#xff0c;带入圆的方程&#xff0c;看是否在圆内或圆上 #include<bits/stdc.h> using namespace std; int main() {int w,h,n,r,i,j,k,s,ans0;cin>>w>>h>>n>>r;int x[n1],y[n1];for(i0;i<n;i){cin>>x[i]>&…

【Redis | 第一篇】快速了解Redis

文章目录 1.快速了解Redis1.1简介1.2与其他key-value存储的不同处1.3Redis安装——Windows环境1.3.1下载redis1.3.2启动redis1.3.3进入redis客户端1.3.4修改配置 1.4Redis安装——Linux环境1.4.1安装命令1.4.2启动redis1.4.3进入redis客户端 1.5配置修改1.6小结 1.快速了解Redi…

设计模式-结构模式-装饰模式

装饰模式&#xff08;Decorator Pattern&#xff09;&#xff1a;动态地给一个对象增加一些额外的职责&#xff0c;就增加对象功能来说&#xff0c;装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 //首先&#xff0c;定义一个组件接口&#xff1a; public in…

【Go语言】Go语言中的切片

Go语言中的切片 1.切片的定义 Go语言中&#xff0c;切片是一个新的数据类型数据类型&#xff0c;与数组最大的区别在于&#xff0c;切片的类型中只有数据元素的类型&#xff0c;而没有长度&#xff1a; var slice []string []string{"a", "b", "c…

【MySQL】初识MySQL——DDL数据定义语言

目录 数据库作用&#xff1a;数据库管理系统数据库系统DBA 常见的数据库模型关系型数据库管理系统关系模型中的表 MySQL简介MySQL数据库的配置信息 结构化查询语言SQL语句的执行过程SQL的分类使用SQL操作MySQL数据库(DDL)创建数据库语法 查看数据库列表语法 选择或使用数据库语…

面经 | Java创建线程的三种方式

利用JUC包创建线程的三种方式&#xff1a; 通过继承Thread类创建线程类实现Runnable接口创建线程类通过Callable和Future接口创建线程 继承Thread类创建线程 class Thread1 extends Thread {Overridepublic void run() {System.out.println("启动线程1");} }实现R…

Java设计模式 | 七大原则之依赖倒转原则

依赖倒转原则&#xff08;Dependence Inversion Principle&#xff09; 基本介绍 高层模块不应该依赖低层模块&#xff0c;二者都应该依赖其抽象&#xff08;接口/抽象类&#xff09;抽象不应该依赖细节&#xff0c;细节应该依赖抽象依赖倒转&#xff08;倒置&#xff09;的…
推荐文章