PyTorch 一文入门

  • PyTorch 入坑一:数据类型与Tensor的概念
    • PyTorch数据类型
    • Tensor的概念
      • Tensor与Variable
        • Variable
        • Tensor
    • Tensor的创建
  • PyTorch 入坑二:Tensor切分
    • Tensor的拼接
    • Tensor的切分
    • Tensor的索引
    • Tensor的变换
      • torch.reshape()
      • torch.transpose()
      • torch.t()
      • torch.squeeze()
      • torch.unsqueeze()
    • 张量的数学运算
      • 加减乘除
      • 对数,指数,幂函数
      • 三角函数
  • PyTorch 入坑三:线形回归与计算图
    • 线性回归
    • 计算图

PyTorch 入坑一:数据类型与Tensor的概念

PyTorch数据类型

pytorch提供了九种数据类型,主要分为三大类;
第一类是float浮点数,有16位(16-bit floating point)、32位(32-bit floating point)、64位(64-bit floating point);
第二类是整型,有8位(8-int integer(unsigned),8-int integer(signed)),32位(32-bit integer(signed)),64-bit integer(signed);
第三类是布尔型数据(Boolean)。

用得最多的是32-bit floating point(卷积神经网络或者图片处理使用到)和64-bit integer(signed)(图像的标签通常用长整型进行表示)

tensor有八个属性,其中四个属性与数据相关,4个属性与梯度求导相关。

Tensor的概念

Tensor(张量)是一个多维数组,它是标量、向量、矩阵的高维拓展。

  • 标量是一个零维张量,是没有方向的,是一个数。
  • 一维张量只有一个维度,是一行或者一列
  • 二维张量是一个矩阵,有两个维度,灰度图片就是一个二维张量
  • 当图像是彩色图像(RGB)的时候,就得使用三维张量了

Tensor与Variable

Variable

  • variable是pytorch 0.4.0以前的版本中一个重要的数据类型,从pytorch0.4.0开始,variable并入到tensor 中

  • variable是torch.autograd中的数据类型,主要用于封装tensor,进行自动求导。variable主要由以下几个部分组成

      - data: 被包装的tensor- grad: data的梯度- grad_fn: 表明该变量是怎么来的,用于指导反向传播,例如loss = a+b,则loss.gard_fn为<AddBackward0 at 0x7f2c90393748>,表明loss是由相加得来的,这个grad_fn可指导怎么求a和b的导数- requires_grad: 指示是否需要梯度- is_leaf: 指示是否是叶子结点(张量)
    


Tensor

  • pytorch自0.4.0版本后将variable并入tensor中

  • 在tensor中有8个部分,其中有5个部分在前面的variable中已经介绍了。剩余的3个部分分别为dtype,shape,device

      - dtype: 张量的数据类型,如torch.FloatTensor, torch.cuda.FloatTensor,cuda表示数据是放到GPU上的- shape: 张量的形状,如(64,3,224,224)- device:张量所在设备,GPU/CPU,是加速的关键
    

Tensor的创建

张量的创建有三大方法,第一类是直接创建,第二类是依据数值创建,第三类是依据概率创建
未完待续

https://blog.csdn.net/qq_37388085/article/details/102504334

PyTorch 入坑二:Tensor切分

Tensor的拼接

Tensor的切分

Tensor的索引

Tensor的变换

torch.reshape()

torch.transpose()

torch.t()

torch.squeeze()

torch.unsqueeze()

张量的数学运算

加减乘除

  • torch.add()
  • torch.addcdiv()
  • torch.addcmul()
  • torch.sub()
  • torch.div()
  • torch.mul()

对数,指数,幂函数

  • torch.log(input,out=None)
  • torch.log10(input,out=None)
  • torch.log2(input,out=None)
  • torch.exp(input,out=None)
  • torch.pow()

三角函数

  • torch.abs(input,out=None)
  • torch.acos(input,out=None)
  • torch.cosh(input,out=None)
  • torch.cos(input,out=None)
  • torch.asin(input,out=None)
  • torch.atan(input,out=None)
  • torch.atan2(input,other,out=None)

PyTorch 入坑三:线形回归与计算图

线性回归

求解步骤

1、确定模型 model: y = wx + b
2、选择损失函数 MSE,均方误差
3、求解梯度并更新w,b

计算图

import torch
import matplotlib.pyplot as plt
torch.manual_seed(10)lr = 0.05  # 学习率# 创建训练数据
x = torch.rand(20, 1) * 10  # x data (tensor), shape=(20, 1)  rand是生成均匀分布的20个点,再乘于10,范围就是0-10之间
y = 1*x + (5 + torch.randn(20, 1))  # y data (tensor), shape=(20, 1),torch.randn(20, 1)是噪声,符合正态分布# 构建线性回归参数
w = torch.randn((1), requires_grad=True)  #线性函数中只有一个w,先随机初始化一个w
b = torch.zeros((1), requires_grad=True)  #线性回归中只有一个b,先随机初始化b的值为0for iteration in range(1000):# 前向传播wx = torch.mul(w, x)  #将w和x的值相乘y_pred = torch.add(wx, b)   #计算wx + b的值# 计算 MSE lossloss = (0.5 * (y - y_pred) ** 2).mean()   #计算损失函数# 反向传播loss.backward()    #使用自带的梯度求导模块# 更新参数b.data.sub_(lr * b.grad)w.data.sub_(lr * w.grad)b.grad.zero_()    #将张量梯度清零w.grad.zero_()    #将张量梯度清零# 绘图if iteration % 20 == 0:   #每迭代20次进行一次输出plt.scatter(x.data.numpy(), y.data.numpy())plt.plot(x.data.numpy(), y_pred.data.numpy(), 'r-', lw=5)plt.text(2, 20, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 20, 'color':  'red'})plt.xlim(1.5, 10)plt.ylim(8, 28)plt.title("Iteration: {}\nw: {} b: {}".format(iteration, w.data.numpy(), b.data.numpy()))plt.pause(0.5)if loss.data.numpy() < 1:   #如果损失函数的值小于0.8则停止循环break

PyTorch入坑(一)~(三): Tensor的概念,基本操作和线性回归相关推荐

  1. PyTorch 入坑七:模块与nn.Module学习

    PyTorch 入坑七 模型创建概述 PyTorch中的模块 torch模块 torch.Tensor模块 torch.sparse模块 torch.cuda模块 torch.nn模块 torch.n ...

  2. PyTorch 入坑四 梯度、链式法则、计算图与反向传播

    PyTorch 一文入门 PyTorch 入坑四:计算图与反向传播 导数.梯度与最优化 方向导数与梯度 最优化 复合函数求梯度 计算图 PyTorch实战 PyTorch中的动态图机制 PyTorch ...

  3. PyTorch 入坑九:权重初始化

    这里写目录标题 Pytorch提供的十种权值初始化方法 为什么要进行权重初始化设计:从梯度消失与爆炸说起 常用的几种权重初始化方法 不考虑激活函数 饱和型激活函数 xavier_uniform方法 非 ...

  4. PyTorch 入坑六 数据处理模块Dataloader、Dataset、Transforms

    深度学习中的数据处理概述 深度学习三要素:数据.算力和算法 在工程实践中,数据的重要性越来越引起人们的关注.在数据科学界流传着一种说法,"数据决定了模型的上限,算法决定了模型的下限" ...

  5. PyTorch 入坑十一: 损失函数、正则化----深刻剖析softmax+CrossEntropyLoss

    这里写目录标题 概念 Loss Function Cost Function Objective Function 正则化 损失函数 交叉熵损失函数nn.CrossEntropyLoss() 自信息 ...

  6. PyTorch 入坑八:卷积与转置卷积

    卷积 操作 略 输入输出尺寸变化 略 PyTorch实现 nn.Conv2d(in_channels,out_channels,kernel_size,stride=1.padding=0,dilat ...

  7. PyTorch 入坑五 autograd与逻辑回归

    torch.autograd 深度学习模型的训练就是不断更新权值,权值的更新需要求解梯度,梯度在模型训练中是至关重要的.       然而求解梯度十分繁琐,pytorch提供自动求导系统.我们不需要手 ...

  8. 模拟飞行入坑(三) P3Dsimconnect 两台电脑远程连接配置

    背景 两台电脑一台运行Prepar3D,但是二次开发的程序放置在另一台电脑,要使用simconnect 连接,simconnect 有自带的管道通信,可以在配置文件里直接配置. 1.配置文件 SimC ...

  9. Vue React Angular之三国杀,web前端入坑第六篇 上

    「 懒癌引发血案 」 目前前端技术栈发生了翻天覆地的变化,上篇刚写了只会jquery 要失业,再不学新的你就要被淘汰,虽然有点危言耸听,不过现实情况确实是这样. vue.react.angular对比 ...

最新文章

  1. php扩展的应用,《PHP扩展开发及内核应用》
  2. 代码检查规则:Python语言案例详解
  3. android ios av tv,iOS使用AVPlayer制作战旗TvDEMO OC版
  4. CentOS7.4搭建FTP服务器(vsftp)
  5. 【拓扑排序】确定比赛名次
  6. ssm访问html乱码_SpringMVC+jdbc和SSM整合
  7. 二叉树 的建立及遍历 过程
  8. java(17) - 增强for循环、装箱拆箱、可变参数
  9. 1121 Damn Single(25 分)
  10. c语言编程ppt免费下载,概述C语言编程.ppt
  11. vmware给linux虚拟机添加新的分区
  12. Android Glide加载本地gif动态图
  13. 基于单片机花式喷泉喷水池控制系统设计-单片机的简易电子钟加闹钟设计-51单片机车汽车流量检测电路系统-51单片机超声波三方向测距系统设计-基于51单片机超声波水位液位控制系统毕业设计
  14. python opencv导入pbtxt文件出现错误Failed to parse GraphDef file
  15. Firefox检测到潜在的安全威胁,并因blog.csdn.net要求安全连接而没有继续
  16. Chrome浏览器快捷键
  17. PLSQL - 递归子查询RSF打破CONNECT BY LOOP限制
  18. APP开发者如何来实现视频聊天室功能
  19. 铁流:兆芯处理器媲美国际主流水准?言过其实
  20. 自动控制原理7.7---离散系统的数字校正

热门文章

  1. Unity3D基础30:协同程序
  2. jQuery Mobile中头部栏header的data-*选项
  3. 贺利坚老师汇编课程47笔记:jmp指令无条件转移只修改IP
  4. 贺利坚老师汇编课程28笔记:在代码段使用数据加个标号start
  5. Crackme019
  6. Android驱动开发第一章
  7. Activiti6.0 安装出错 log4j:ERROR setFile(null,true) call failed.
  8. (转)关于中国的互联网
  9. Robocode教程4——Robocode的游戏物理
  10. 最多只能选择两个多选框的jQuery功能实现