• 【PyTorch】——创建张量、展示、改变大小、array和tensor的转换、Autograd求导


    一、引言

         深度学习框架武林盟主之争的历历史,大概是这个样子的。15年底之前Caffe是老大哥,随着Tensorflow的诞生,霸占江湖数载,19年起无论从学术界还是工程界PyTorch已经霸占了半壁江山!

    二、张量和矩阵的联系

    一维张量是向量,二维张量是矩阵,张量可以是多维的,张量包含矩阵。

    三、创建张量

    (1)构建一个6x3的未初始化的矩阵

    1. import torch
    2. x=torch.empty(6,3)
    3. x

    结果:

     (2)创建随机矩阵

    1. x=torch.rand(5,3)
    2. x

    结果:

    (3)初始化零矩阵dtype是long类型

    1. x=torch.zeros(5,3,dtype=torch.long)
    2. x

    结果;

     

    四、size()、view()等同于numpy中的shape()、reshape() 

     

    1. x=torch.zeros(5,3,dtype=torch.long)
    2. x.size()

    结果:

    1. x=torch.randn(4,4)
    2. y=x.view(16)
    3. z=x.view(-1,8) #-1代表自动进行计算16/8=2这个意思
    4. print(x.size(),y.size(),z.size())

     结果:

    五、tensor和array相互转换 

    (1)torch转array

    1. a=torch.ones(5)
    2. b=a.numpy()
    3. b

    结果:

    (2)array转tenor

    1. import numpy as np
    2. a=np.ones(5)
    3. b=torch.from_numpy(a)
    4. b

     结果:

     六、Autograd: 自动求导

    当完成(正向)计算之后, 我们可以调用backward(),PyTorch会自动的把所有的梯度都计算好。与这个tensor相关的梯度都会累加到它的grad属性里。

    如果不想计算这个tensor的梯度,我们可以调用detach(),这样它就不会参与梯度的计算了。

     

    1. x=torch.rand(1)
    2. b=torch.rand(1,requires_grad=True)#设置了代表可以求导,不设置代表常量
    3. w=torch.rand(1,requires_grad=True)
    4. y=w*x
    5. z=y+b
    6. z.backward()
    7. w.grad
    8. b.grad
    9. x

    结果:

  • 相关阅读:
    卧式铣床主传动系统设计建模及运动仿真
    二、T100生产管理之工单开立与变更管理
    xftp无法删除目录
    I/O复用--浅谈epoll
    luogu P5560 [Celeste-B]Golden Feather
    654. Maximum Binary Tree
    TensorRT 学习(二):Pytorch 模型转 TensorRT C++ 流程
    域名 DNS 信息查询 API 数据接口
    详解分布式系统的幂等
    面试算法26:重排链表
  • 原文地址:https://blog.csdn.net/m0_72662900/article/details/126974809