pytorch安装(CPU和GPU),以及简单的API

1 pytorch介绍

1 END-TO-END MACHINE LEARNING FRAMEWORK(端到端的机器学习框架)

上述这样命名就是因为深度学习只是机器学习的一个分支

2 pytorch的优点:简单易用、分布式训练、服务器部署方便、移动端部署方便;

3 PyTorch 是基于以下两个目的而打造的python科学计算框架:

        无缝替换NumPy,并且通过利用GPU的算力来实现神经网络的加速。

        通过自动微分机制,来让神经网络的实现变得更加容易。

4 参考网站:

        https://github.com/pytorch/pytorch

        https://pytorch.org/

        https://pytorch.apachecn.org/#/docs/1.7/README

        https://github.com/pytorch/examples

5 深度学习案例直观理解

http://playground.tensorflow.org

2 pytorch的安装

Python版本要求必须是64位的;CPU版本或者GPU版本任选一个版本安装即可;GPU版本的安装要求必须是NVIDIA显卡,并且安装好对应的驱动。

 -1. 使用anaconda安装Python环境,建议python版本:3.8/3.9/3.10
 -2. 建议首先安装CPU版本,然后有条件的情况下,用anaconda创建一个虚拟环境,在虚拟环境中安装GPU版本

2.1 CPU版本安装

https://pytorch.org/get-started/previous-versions/

进入此网站,可以看到很多安装命令

1 conda安装

如果使用conda安装,把conda的安装源切换到国内的源,怎么修改,如下


conda
添加国内镜像源

conda config --add channels
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

修改源之后,可以在上述网站中找到想要安装的版本,也可以参考我的版本

安装命令:(conda版本)

conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -c pytorch

2 无conda安装

安装命令:

pip install torch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -i http://mirrors.aliyun.com/pypi/simple/

(切记,无论是哪儿种安装,请先关闭vpn进行安装)

2.2 GPU版本安装

在上述网站,提供的只有conda的GPU安装

1 检查当前机器是否有nvidia的GPU

打开任务管理器里面的性能,找到下面GPU 显示NVIDIA的GPU就是有GPU

2  检查nvidia的GPU版本驱动安装是否成功
        在anconda命令行执行 nvidia-smi   得到如下图片就是成功的


如果执行上面命令报错或者看不到上面图片信息,就是驱动不对

具体办法有博主有写,具体博客我就不放了,防止侵权

人工智能计算领域的领导者 | NVIDIA这是官网安装驱动的地方

3 修改conda国内源

如果已经修改可忽略


conda
添加国内镜像源

conda config --add channels
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

4 安装GPU版本命令

可以用anaconda创建一个虚拟环境,在虚拟环境中安装GPU版本

查看当前存在的所有conda环境  conda env list

创建虚拟环境  conda create -n pytorch_gpu python=3.8(这是我自己的,你可以修改名字还有python版本)

切换虚拟环境 conda activate pytorch_gpu(后面跟的是你创建的的虚拟环境的名字)

切换到虚拟环境后使用网站里的你想安装的版本进行安装,我的是1.10.1

conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge

上述安装可能比较慢。

还有因为在国内,安装GPU版本有时候会出现问题,出现问题了就重试,万能大法,哈哈

切记(安装的时候关闭vpn)

如果安装成功后,进入conda命令行,输入python进入命令行,然后输入import torch导入pytorch,导入后再输入torch.cuda.is_available(),如果提示True则表示成功

3 pytorch简单API

API文档:

torch的基本API

torch — PyTorch 2.1 documentation

torch的封装的深度学习算子API

torch.nn — PyTorch 2.1 documentation

torch的深度学习算子以函数形式的使用展示

torch.nn.functional — PyTorch 2.1 documentation

torch模型优化器相关的API

torch.optim — PyTorch 2.1 documentation

简单的使用API如下代码

import torch
import numpy as np


def t1():
    # 创建tensor对象方法

    v1 = torch.rand(2, 3, 4)  # 在0到1之间的浮点数取值填充
    print(v1.shape)  # torch.Size([2, 3, 4])

    py_v2 = [[1.0, 1.32], [2.3, 3.2], [5.2, 324.2]]
    v2 = torch.tensor(py_v2)
    print(v2.shape)  # torch.Size([3, 2])
    py_v2[0][1] = 100
    print(py_v2)
    print(v2)  # 不变, 不与列表共享内存, 和原来没有关系

    np_v3 = np.random.randint(10, size=(2, 3))  # 随机取10以内的数字
    v3 = torch.from_numpy(np_v3)
    print(v3.shape)  # torch.Size([2, 3])
    np_v3[0][1] = 100
    v3[1][1] = -100
    print(v3)
    # tensor和numpy都会改变, pytorch目的是替代numpy的, 底层就是numpy, 区别是支持GPU
    print(np_v3)  # 创建的tensor对象和入参numpy对象共用一个内存地址


def t2():
    # tensor转换为numpy
    v1 = torch.rand(2, 3)
    print(v1)
    np_v1 = v1.numpy()  # v1必须在cpu上, v1不涉及到梯度的计算
    print(np_v1)

    v2 = torch.rand(2, 3)
    print(v2)
    np_v2 = v2.detach().cpu().numpy()  # detach梯度截断, cpu就是如果是GPU,就把对象数据copy到cpu上,cpu则不变
    print(np_v2)

    v3 = torch.rand(1)[0]  # 一个标量tensor
    print(v3)
    print(v3.shape)  # torch.Size([])
    np_v3 = v3.detach().cpu().numpy()  # detach梯度截断, cpu就是如果是GPU,就把对象数据copy到cpu上,cpu则不变
    print(np_v3)
    print(v3.item())  # 仅支持是一个标量的tensor, 是一个普通的python浮点数类型


if __name__ == '__main__':
    t2()