博客
关于我
PyTorch学习笔记01: PyTorch基本概念
阅读量:809 次
发布时间:2019-03-15

本文共 1304 字,大约阅读时间需要 4 分钟。

PyTorch学习笔记01: PyTorch基本概念

张量的简介和创建

张量的概念

PyTorch中的张量是对机器学习中的数组数据进行扩展和操作的基础数据结构。张量在PyTorch中通过torch.tensor()创建,并具有动态计算图求导的特性。每个张量都有一个grad属性,用于存储梯度信息。

张量的创建

PyTorch提供了三类创建张量的方式:

1. 直接创建

  • 使用torch.tensor()或torch.from_numpy()创建张量。torch.tensor()可以从Python列表、numpy数组等创建张量。
  • 代码示例:
t = torch.tensor([1, 2, 3], dtype=torch.float32)t = torch.from_numpy(np.array([1, 2, 3])).float()

2. 依数值创建

PyTorch提供了多种函数用于依数值创建张量:

  • 全零张量:torch.zeros()
  • 全一张量:torch.ones()
  • 等差数列:torch.arange()
  • 均匀分布:torch.linspace()
  • 对数均匀分布:torch.logspace()
  • 单位矩阵:torch.eye()

3. 依概率创建

  • 正态分布:torch.normal()
  • 标准正态分布:torch.randn()
  • 均匀分布:torch.rand()
  • 伯努利分布:torch.bernoulli()
  • 排列:torch.randperm()

张量的操作

形态变换

PyTorch提供了多种函数用于对张量进行形态变换:

拼接与切分

  • torch.cat():按维度拼接张量
  • torch.stack():在新维度上拼接张量
  • torch.chunk():按维度切分张量
  • torch.split():按维度切分张量

张量索引

  • torch.index_select():按维度索引张量
  • torch.masked_select():按掩码索引张量

形状变换

  • torch.reshape():改变张量的形状
  • torch.transpose():交换张量的维度
  • torch.t():两维张量转置
  • torch.squeeze():压缩长度为1的维度
  • torch.unsqueeze():扩展张量的维度

计算图与autograde

计算图

计算图是PyTorch用于描述运算的有向无环图,主要由节点和边组成:

  • 节点:表示数据(如张量)
  • 边:表示运算(如加法、乘法)

autograde自动求导

PyTorch通过torch.autograd提供自动求导功能,主要有两个API:

  • torch.autograd.backward():对所有节点求梯度
  • torch.autograd.grad():对指定节点求梯度
  • 反向传播

    在反向传播过程中,非叶子节点的梯度会被释放,为了保留梯度需要手动调用retain_grad()。使用backward()方法进行反向传播。

    注意事项

    • 梯度不会自动清零,需手动清零。
    • 叶子节点的requires_grad默认为True。
    • 避免在反向传播前对节点进行in-place操作。

    转载地址:http://rwhlz.baihongyu.com/

    你可能感兴趣的文章
    python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
    查看>>
    python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
    查看>>
    Python+Selenium之数据驱动测试的实现
    查看>>
    python函数定义与使用+返回值简解
    查看>>
    Python+Selenium登录
    查看>>
    Python日期时间模块
    查看>>
    Python函数合集:足足68个内置函数请收好!
    查看>>
    Python+Selenium自动化测试项目实战
    查看>>
    Python+Selenium自动化测试项目实战【建议收藏】
    查看>>
    Python+Selenium自动化测试:Page Object模式
    查看>>
    python+selenium进行cnblog的自动化登录测试
    查看>>
    Python函数只返回第一个值而不是数据框
    查看>>
    Python+SQL实战:京东用户行为数据分析案例解析(上)
    查看>>
    Python+SQL实战:京东用户行为数据分析案例解析(下)
    查看>>
    PYTHON+Twisted+sqlanydb=ABORT()
    查看>>
    Python函数之返回值、作用域和局部变量
    查看>>
    Python+统计学 | 探索常用的数据分析统计分布
    查看>>
    python, selenium中用于切换帧的函数
    查看>>
    python函数
    查看>>
    python----线程、进程、协程的区别及多线程详解
    查看>>