• 深度学习 Pytorch安装和基本操作


    一、前言

    PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。

    二、安装

    Pytorch的安装有多种方式,不过官网会根据使用者的情况,给出安装方式。如下图,一句命令行搞定。

    在这里插入图片描述
    注意此命令是非GPU版,(作者目前只用于学习测试就轻装上阵啦~):

    pip3 install torch torchvision torchaudio
    
    • 1

    如果选择了GPU版本,在执行安装命令后,需要到英伟达官网下载CUDA安装,这里给的是中文网址,解决访问慢的问题。

    在这里插入图片描述

    三、基本操作

    初始化空矩阵

    #引入torch
    import torch
    
    #初始化空矩阵(不一定是0)
    x=torch.empty(2,6)
    print(x)
    
    #初始化空矩阵(不一定是0)
    x=torch.Tensor(2,6)
    print(x)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    tensor([[0., 0., 0., 0., 0., 0.],
            [0., 0., 0., 0., 0., 0.]])
    tensor([[9.6428e-39, 1.1112e-38, 9.5511e-39, 1.0102e-38, 1.0286e-38, 1.0194e-38],
            [9.6429e-39, 9.2755e-39, 9.1837e-39, 9.3674e-39, 1.0745e-38, 1.0653e-38]])
    
    • 1
    • 2
    • 3
    • 4

    初始化矩阵为0

    x=torch.zeros(2,6)
    print(x)
    
    • 1
    • 2
    tensor([[0., 0., 0., 0., 0., 0.],
            [0., 0., 0., 0., 0., 0.]])
    
    • 1
    • 2

    初始化矩阵为1

    x=torch.ones(2,6)
    print(x)
    
    • 1
    • 2
    tensor([[1., 1., 1., 1., 1., 1.],
            [1., 1., 1., 1., 1., 1.]])
    
    • 1
    • 2

    生成序列

    #(起始值,最终值,步长),长度:(最终值-起始值)/步长,out_0=start,out_new=out_last+step
    print(torch.arange(4))
    print(torch.arange(0,4))
    print(torch.arange(0,8,2)) 
    
    • 1
    • 2
    • 3
    • 4
    tensor([0, 1, 2, 3])
    tensor([0, 1, 2, 3])
    tensor([0, 2, 4, 6])
    
    • 1
    • 2
    • 3

    生成均值0~1的随机矩阵

    x=torch.rand(2,6)
    print(x)
    
    • 1
    • 2
    tensor([[0.3755, 0.2834, 0.7252, 0.2890, 0.8312, 0.2263],
            [0.1026, 0.8741, 0.2343, 0.4330, 0.1700, 0.4974]])
    
    • 1
    • 2

    生成均值为0,方差为1的正态分布随机矩阵

    x=torch.randn(2,6)
    print(x)
    
    • 1
    • 2
    tensor([[-0.1415, -0.0771, -0.4097, -0.8826, -0.7365, -0.1372],
            [ 0.2306,  3.0268,  0.0854,  1.0262, -1.1437, -0.9747]])
    
    • 1
    • 2

    获取矩阵大小

    size=x.size()
    print(size)
    
    • 1
    • 2
    torch.Size([2, 6])
    
    • 1

    改变矩阵大小

    x=x.view(3,4)
    print(x)
    
    • 1
    • 2
    tensor([[-0.1415, -0.0771, -0.4097, -0.8826],
            [-0.7365, -0.1372,  0.2306,  3.0268],
            [ 0.0854,  1.0262, -1.1437, -0.9747]])
    
    • 1
    • 2
    • 3

    tensor转化成numpy

    x=x.numpy()
    print(x)
    
    • 1
    • 2
    [[-0.1414774  -0.0771474  -0.40970442 -0.8825591 ]
     [-0.73653847 -0.13715151  0.2305768   3.0268297 ]
     [ 0.08539295  1.0261918  -1.1437056  -0.974712  ]]
    
    • 1
    • 2
    • 3

    numpy转化成tensor

    
    x=torch.from_numpy(x)
    print(x)
    
    • 1
    • 2
    • 3
    tensor([[-0.1415, -0.0771, -0.4097, -0.8826],
            [-0.7365, -0.1372,  0.2306,  3.0268],
            [ 0.0854,  1.0262, -1.1437, -0.9747]])
    
    • 1
    • 2
    • 3

    绝对值

    x=torch.abs(x)
    print(x)
    
    • 1
    • 2
    tensor([[0.1415, 0.0771, 0.4097, 0.8826],
            [0.7365, 0.1372, 0.2306, 3.0268],
            [0.0854, 1.0262, 1.1437, 0.9747]])
    
    • 1
    • 2
    • 3

    加减乘除

    print('x=',x)
    y=torch.ones(3,4)*2
    print('y=',y)
    
    print('x+y=',x+y)
    print('x-y=',x-y)
    print('x*y=',x*y)
    print('x/y=',x/y)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    x= tensor([[0.1415, 0.0771, 0.4097, 0.8826],
            [0.7365, 0.1372, 0.2306, 3.0268],
            [0.0854, 1.0262, 1.1437, 0.9747]])
    y= tensor([[2., 2., 2., 2.],
            [2., 2., 2., 2.],
            [2., 2., 2., 2.]])
    x+y= tensor([[2.1415, 2.0771, 2.4097, 2.8826],
            [2.7365, 2.1372, 2.2306, 5.0268],
            [2.0854, 3.0262, 3.1437, 2.9747]])
    x-y= tensor([[-1.8585, -1.9229, -1.5903, -1.1174],
            [-1.2635, -1.8628, -1.7694,  1.0268],
            [-1.9146, -0.9738, -0.8563, -1.0253]])
    x*y= tensor([[0.2830, 0.1543, 0.8194, 1.7651],
            [1.4731, 0.2743, 0.4612, 6.0537],
            [0.1708, 2.0524, 2.2874, 1.9494]])
    x/y= tensor([[0.0707, 0.0386, 0.2049, 0.4413],
            [0.3683, 0.0686, 0.1153, 1.5134],
            [0.0427, 0.5131, 0.5719, 0.4874]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    三角函数

    y.sin()
    
    • 1
    tensor([[0.9093, 0.9093, 0.9093, 0.9093],
            [0.9093, 0.9093, 0.9093, 0.9093],
            [0.9093, 0.9093, 0.9093, 0.9093]])
    
    • 1
    • 2
    • 3

    求和

    sum=y.sum()
    print(sum)
    
    • 1
    • 2
    tensor(24.)
    
    • 1

    张量转标量

    print(sum.item())
    print(int(sum))
    print(float(sum))
    
    • 1
    • 2
    • 3
    24.0
    24
    24.0
    
    • 1
    • 2
    • 3

    均值

    print(y.mean())
    
    • 1
    tensor(2.)
    
    • 1

    矩阵点乘

    import numpy as np
    A=np.array(
        [
            [1,2,3,4]
        ]
    )
    
    B=np.array(
        [
            [1],
            [2],
            [3],
            [4]
        ]
    )
    
    print('numpy:',A.dot(B))
    
    a=torch.from_numpy(A)
    b=torch.from_numpy(B)
    print('torch:',a.mm(b))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    numpy: [[30]]
    torch: tensor([[30]], dtype=torch.int32)
    
    • 1
    • 2
  • 相关阅读:
    ts的交叉类型是什么
    【目标检测】YOLOv5遇上知识蒸馏
    哈希表的实现(c语言)
    Mysql表的约束
    基于RuoYi-Flowable-Plus的若依ruoyi-nbcio支持formdesigner的本地图片上传与回显的功能实现
    flutter 时间戳转日期
    牛客网SQL160
    中东 Shopify 如何使用 Bytebase 构建一站式数据库开发工作流
    MySQL概述
    BMZCTF phar???
  • 原文地址:https://blog.csdn.net/Leytton/article/details/127582044