博客
关于我
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 中的装饰器是什么?
    查看>>
    Python 中的装饰器是如何工作的,有哪些实际应用场景?
    查看>>
    python读excel
    查看>>
    Python 中读取 CSV 文件-ChatGPT4o作答
    查看>>
    python请求html_使用Python请求获取HTML?
    查看>>
    Python 之匿名函数和偏函数
    查看>>
    python 之栈的实现
    查看>>
    python语音播放
    查看>>
    python语言:装饰器原理
    查看>>
    Python 交互式数据可视化详解
    查看>>
    python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
    查看>>
    Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
    查看>>
    Python 从数据库中存储和检索密码的最安全方法
    查看>>
    Python语言及其应用 - 知识点遍历
    查看>>
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>