博客
关于我
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/

    你可能感兴趣的文章
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中多图层遮挡时调整图层上下顺序
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    Openlayers实战:modifystart、modifyend互动示例
    查看>>
    Openlayers实战:判断共享单车是否在电子围栏内
    查看>>
    Openlayers实战:加载Bing地图
    查看>>
    Openlayers实战:绘制图形,导出geojson文件
    查看>>
    Openlayers实战:绘制图形,导出KML文件
    查看>>
    Openlayers实战:绘制多边形,导出CSV文件
    查看>>
    Openlayers实战:绘制带箭头的线
    查看>>
    Openlayers实战:输入WKT数据,输出GML、Polyline、GeoJSON格式数据
    查看>>
    Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
    查看>>
    Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
    查看>>
    Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
    查看>>
    Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
    查看>>
    Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
    查看>>
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>