深度学习-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

常用镜像源

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)离线安装

复制代码
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)

相关推荐
2的n次方_4 分钟前
丹摩|丹摩智算平台深度评测
人工智能
智慧化智能化数字化方案8 分钟前
解读 144页 汽车企业数智化战略规划PPT方案,学习车企数智化战略规划
人工智能·学习·汽车
倔强的石头10620 分钟前
DAMODEL丹摩|《ChatGLM-6B 在丹摩智算平台的部署与使用指南》
人工智能·ai
小嗷犬21 分钟前
【论文笔记】Improved Baselines with Visual Instruction Tuning
论文阅读·人工智能·语言模型·大模型·多模态
抓哇能手1 小时前
机器学习基础
人工智能·opencv·算法·机器学习·计算机视觉·机器视觉
乐呦刘、5 小时前
nature communications论文 解读
人工智能·深度学习·机器学习
自不量力的A同学9 小时前
微软发布「AI Shell」
人工智能·microsoft
一点一木9 小时前
AI与数据集:从零基础到全面应用的深度解析(超详细教程)
人工智能·python·tensorflow
花生糖@9 小时前
OpenCV图像基础处理:通道分离与灰度转换
人工智能·python·opencv·计算机视觉
2zcode9 小时前
基于YOLOv8深度学习的智慧农业棉花采摘状态检测与语音提醒系统(PyQt5界面+数据集+训练代码)
人工智能·深度学习·yolo