深度学习-pytorch安装与基本使用

一. 基本介绍

Pytorch概念

  1. PyTorch是一个开源机器学习和深度学习框架。PyTorch 允许您使用 Python 代码操作和处理数据并编写深度学习算法能够在强大的GPU加速基础上实现张量和动态神经网络

  2. PyTorch是一个基于 Python 的科学计算包,使用 Tensor 作为其核心数据结构,类似于 Numpy 数组,不同的是,PyTorch 可以用GPU来处理数据,提供许多深度学习的算法。

  3. PyTorch提供了完整的使用文档、循序渐进的用户指南,作者亲自维护PyTorch论坛,方便用户交流和解决问题。

  4. Meta(前Facebook)人工智能研究院FAIR对PyTorch的推广提供了大力支持。作为当今排名前三的深度学习研究机构,FAIR的支持足以确保PyTorch获得持续开发、更新的保障,不至于像一些个人开发的框架那样昙花一现。如有需要,我们也可以使用Python软件包(如NumPy、SciPy和Cython)来扩展 PyTorch。

  5. 相对于TensorFlow,PyTorch的一大优点是它的图是动态的,而TensorFlow框架是静态图,不利于扩展。同时,PyTorch非常简洁,方便使用。

  6. 如果说TensorFlow的设计是“Make it complicated”,Keras的设计是“Make it complicated and hide it”,那么PyTorch的设计则真正做到了“Keep it simple,stupid”

为什么使用Pytorch

  1. 机器学习研究人员喜欢使用 PyTorch。截至 2022 年 2 月,PyTorch 是 Papers With Code 上最常用的深度学习框架,该网站用于跟踪机器学习研究论文及其附带的代码存储库。

  2. PyTorch 易于学习和使用,足够灵活,可以在各种应用中使用,高效,以便我们可以处理巨大的现实数据集,并且足够准确,即使在输入数据存在不确定性的情况下也能提供正确的结果。

  3. 许多深度学习的应用使用了PyTorch,比如:

    文字生成图片的Stable Diffusion:

    用于对象检测和语义分割的YOLOv5系列(现在已经更新到YOLOv10):

    实时语音克隆Real-Time Voice Cloning

  4. 除上述通用领域的应用外,在一些专业领域的应用也在快速发展,比如医学领域,用PyTorch开发的开箱即用的解决方案nnU-Net

  5. 在GIS领域,ESRI官方提供了许多解决方案和预训练模型,有提取建筑物轮廓的模型:

深度学习优缺点

与机器学习的差别

  • 不需要人工特征工程

  • 特征工程+分类/回归 使用一个网络来完成

优缺点

优点

  1. 精确度高,性能好,效果好

  2. 拟合任意非线性的关系

  3. 框架多,不需我们自己造轮子

缺点

  1. 黑箱,可解释性差

  2. 网络参数多,超参数多

  3. 需要大量的数据进行训练,训练时间长,对算力有较高要求

  4. 小数据集容易过拟合

二. 环境安装

PyTorch安装环境配置

直接安装-CPU

pip install torch==X.XXX

常用镜像源

  • 清华源:Simple Index

  • 豆瓣源:Simple Index

CUDA安装-GPU

使用CUDA安装前应确定电脑装有英伟达的显卡, 如果没有显卡, 可以使用直接安装得方法, 不适用GPU

新建沙箱

创建一个虚拟python环境:

conda create -n DL_Pytorch python=3.9
​
conda activate DL_Pytorch

查看虚拟环境列表:

conda info --envs
​
conda info -e
​
conda env list

激活虚拟环境

# conda旧版本:4.3及更早的版本
source activate DL_Pytorch 
# conda新版本:4.4及以后
conda activate DL_Pytorch

删除虚拟环境

conda remove -n DL_Pytorch --all

查看本机GPU

在CUDA Toolkit 安装前用以下命令查询机器上显卡最高支持的CUDA 版本:

终端输入:

# 查看GPU信息
nvidia-smi

安装或更新驱动

最好使得驱动支持cuda11.8以上版本, 如果电脑显卡信息显示支持得CUDA版本低于11.8, 建议更新到11.8及以上

官方驱动下载地址:下载 NVIDIA 官方驱动 | NVIDIA

安装cuda

如果没有安装cuda或者需要升级,可以去官网下载: CUDA Toolkit Archive | NVIDIA Developer

安装CUDNN

NVIDIA CUDA深度神经网络库 (cuDNN) 是一个 GPU 加速深度神经网络基元库,能够以高度优化的方式实现标准例程(如前向和反向卷积、池化层、归一化和激活层)。

全球的深度学习研究人员和框架开发者都依赖 cuDNN 来实现高性能 GPU 加速。借助 cuDNN,研究人员和开发者可以专注于训练神经网络及开发软件应用,而不必花时间进行低层级的 GPU 性能调整。cuDNN 可加速广泛应用的深度学习框架,包括 Caffe2、Keras、MATLAB、MxNet、PaddlePaddle、PyTorch和 TensorFlow。

下载地址:cuDNN Archive | NVIDIA Developer

  1. 下载并解压缩

  2. 将选中得文件复制到CUDA安装路径:

    • Windows:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA

    • Linux:/usr/local/cuda

安装Pytorch

(1)在线安装

打开pytorch安装指导网站,选择合适的系统平台,关键是在compute platform选择一个不高于本机的CUDA Version,复制命令安装。

(2)离线安装

  • 离线包下载地址:download.pytorch.org/whl/torch_stable.html

  • 安装方式

pip install torch-2.0.1+cu118-cp310-cp310-win_amd64.whl

校验安装

import torch
# 打印出正在使用的PyTorch和CUDA版本。
print(torch.__version__)
print(torch.version.cuda)
​
# 测试GPU是否生效
print(torch.cuda.is_available())

torch-torchvision版本

pytorch与torch vision版本对应问题:

三. 基本使用

张量简介

张量,英文为Tensor,是机器学习的基本构建模块,是以数字方式表示数据的形式。

例如,图像可以表示为形状为 [3, 224, 224] 的张量,这意味着 [colour_channels, height, width] ,因为图像具有 3 颜色通道(红色、绿色、蓝色),高度为 224 像素,宽度为 224 像素。

在张量语言(用于描述张量的语言)中,张量将具有三个维度,一个维度表示 colour_channelsheightwidth

张量的创建

张量得基本创建

根据数据创建torch
# 1. 使用torch.tensor根据数据创建张量
# 1.1. 创建标量
data = torch.tensor(10)
print(data)
​
# 1.2. 创建numpy数组
data = np.random.randn(3, 4)
data = torch.tensor(data)
print(data)
​
# 1.3. 创建张量
data = torch.tensor([[1, 2], [3, 4]])
print(data)
根据形状/数据创建Torch
# 2.使用torch.Tensor根据形状/数据创建张量
# 2.1. 创建两行三列张量, 默认dtype为float32
data = torch.Tensor(2, 3)
print(data)
​
# 2.2. 如果传递列表, 则创建包含指定元素的张量
data = torch.Tensor([10])
print(data)
​
data = torch.Tensor([1, 4])
print(data)
指定类型张量
# 3. torch.IntTensor(), torch.FloatTensor(), torch.DoubleTensor()创建指定类型的张量
# 3.1. 创建2行3列, dtype 为 int32 的张量
data = torch.IntTensor(2, 3)
print(data)
​
# 3.2. 注意: 如果传递的元素类型不正确, 则会进行类型转换
data = torch.IntTensor([2.5, 3.3])
print(data)
​
# 3.3. 其他的类型
data = torch.ShortTensor()      # int16
print(data)
data = torch.LongTensor()       # int64
print(data)
data = torch.FloatTensor()      # float32
print(data)
data = torch.DoubleTensor()     # float64
print(data)

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

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

相关文章

HCIP-HarmonyOS Application Developer V1.0 笔记(五)

弹窗功能 prompt模块来调用系统弹窗API进行弹窗制作。 当前支持3种弹窗API,分别为: 文本弹窗,prompt.showToast;对话框,prompt.showDialog;操作菜单,prompt.showActionMenu。 要使用弹窗功能&…

[极客大挑战 2019]EasySQL 1

[极客大挑战 2019]EasySQL 1 观察题目,发现为登录界面,判断这道题的考点是SQL注入。 知识点 万能密码 知识点原理 当用户尝试登录时 网站后台会进行SQL查询,比如 【select * from table_name where username‘xxxx’ and password‘xxxx…

42.第二阶段x86游戏实战2-lua寻找状态指针

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

leetcode:杨辉三角

题目链接 class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> vv(numRows);//生成一个长度为5&#xff0c;元素为vector<int>的顺序表for (int i 0; i < numRows; i)//对生成的顺序表初始化&#xff…

flutter 写个简单的界面

起因&#xff0c; 目的: 来源: 客户需求。 着急要&#xff0c;我随便写的&#xff0c;应付一下。 过程: 略&#xff0c;直接看代码&#xff0c;看注释。 代码 1 xxx import package:flutter/material.dart;void main() {runApp(const MyApp()); }// # class MyApp extends…

030集——分组法——C# CAD二次开发

重叠的图行进行分组&#xff0c;效果如下&#xff1a; 纵向投影重叠&#xff08;横向移动冲突&#xff09;可以分组: 纵向冲突也可以分组&#xff1a; 也可根据颜色不同分组&#xff1a; 部分代码如下&#xff0c;完整代码见文章下方名片 public class Class1{[CommandMethod(…

java就近原则与this用法 C语言字符串与指针

1. &#xff08;1&#xff09; public class girlfriend{ String name; double high; String face; String age; //在方法里面是局部变量&#xff0c;在方法外面是成员变量public void setName(String name) {this.namename;}public String getName(){return name;}public vo…

基于ssm的个人健康管理系统

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

HTML学习笔记十三

系列笔记目录 第一章 HTML的概述 第二章 URL简介 第三章 网页元素的属性 第四章 html字符编码 第五章 网页的语义结构 第六章 文本标签 第七章 列表标签 第八章 图像标签 第九章 链接标签 第十章 多媒体标签 第十一章 iframe 第十二章 [表格标签]&#xff08;https://blog.csdn…

使用NVM自由切换nodejs版本

一、NVM介绍 在日常开发中&#xff0c;我们可能需要同时进行多个不同NodeJS版本的项目开发&#xff0c;每个项目所依赖的nodejs版本可能不一致&#xff0c;我们如果只安装一个版本的nodejs&#xff0c;就可能出现node版本冲突问题&#xff0c;导致项目无法启动。这种情况下&am…

我懵了,docker容器访问不了外部网络

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 我懵了&#xff0c;docker容器访问不了外部网络 前戏docker中的bridge网络详解解决加餐 前戏 事…

rocketMq学习

RocketMq学习 首先需要了解一下Rocketmq。与市面上常见的消息中间件的区别 工作原理图&#xff1a; 从这张图我们可以看到&#xff0c;rocketmq几个关键的指标 producer、NameServer、broker、consumer windows下安装RocketMq 并使用图形化界面进行管理 1、RocketMq官网下…

Java类和对象(下篇)

今天接着学习类和对象(苦笑)(苦笑)(苦笑) 1. 封装 1.1 封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。 而类和对象阶段&#xff0c;主要研究的就是封装特性。 何为封装呢&#xff1f;简单来说就是套壳屏蔽细节。 举例&#xff1a;对于计算机使用者而言&am…

Docker在CentOS上的安装与配置

前言 随着云计算和微服务架构的兴起&#xff0c;Docker作为一种轻量级的容器技术&#xff0c;已经成为现代软件开发和运维中的重要工具。本文旨在为初学者提供一份详尽的指南&#xff0c;帮助他们在CentOS系统上安装和配置Docker及相关组件&#xff0c;如Docker Compose和私有…

视频智能分析平台LiteAIServer入侵检测算法平台部署行人入侵检测算法:智能安防的新利器

在当今数字化时代&#xff0c;安全防护成为了社会各界高度关注的重要议题。随着人工智能技术的不断发展&#xff0c;视频智能分析平台LiteAIServer 行人入侵检测算法应运而生&#xff0c;为安防领域带来了全新的突破与变革。 视频智能分析平台LiteAIServer 行人入侵检测算法是基…

Java AOT 快速入门

1、编译类型介绍 AOT: Ahead-of-time (提前编译)&#xff1a;程序执行前&#xff0c;全部被编译成机器码 JIT&#xff1a;Just in time&#xff08;即时编译&#xff09;&#xff1a;程序边编译&#xff0c;边运行。 编译&#xff1a;源代码->.class文件->机器码 2、A…

思维导图工具有哪些?10款思维导图特色介绍

电脑的普及&#xff0c;互联网的便捷。使我们平时工作、学习等场景下&#xff0c;常常离不开思维导图的辅助。思维导图是可以让我们所需要介绍的知识点以图文形式结合&#xff0c;展示出来。帮助我们方便理解。因此&#xff0c;一款好的思维导图工具&#xff0c;能让我们制作的…

夸克获评多个AI产品奖项 升级“AI搜题”让用户解新题、难题更高效

日前&#xff0c;在“第9届榜样教育年度盛典”上&#xff0c;夸克“AI搜题” 凭借在AI产品创新以及“灵知”学习大模型上的卓越表现&#xff0c;荣获“2024技术突破教育产品”奖。夸克持续加码在学习产品和技术上的投入&#xff0c;将助力用户进一步提升学习能力与效率。 从去年…

自动化测试中使用Pytest Fixture?推荐10种常见用法!

Pytest 是一个功能强大的 Python 测试框架&#xff0c;其中的Fixture 是 Pytest 中的一个重要功能。它允许你设置一些特定的测试环境或准备测试数据&#xff0c;这些环境和数据可以在多个测试用例中重复使用。通过使用fixture&#xff0c;你可以避免在每个测试函数中编写重复的…

Java 调用淘宝 API 获取商品页面数据示例

在 Java 开发中&#xff0c;我们同样可以调用淘宝 API 来获取商品页面数据。以下是一个用 Java 实现的示例。 一、准备工作 1.引入相关依赖&#xff0c;这里我们使用 Apache HttpClient 来发送 HTTP 请求。可以在项目的 pom.xml 文件中添加以下依赖&#xff1a; <dependenc…