一、张量tensor
简介:
- 0维张量:数字
- 1维张量:向量
- 2维张量:矩阵
- 3维张量:公用数据存储在张量 时间序列数据 股价 文本数据 彩色图片(RGB)
基本用法:
创建tensor
from __future__ import print_function
import torch
一些操作
加法操作:
# 方式1
y = torch.rand(4, 3)
print(x + y)
# 方式2
print(torch.add(x, y))
# 方式3 提供一个输出 tensor 作为参数
# 这里的 out 不需要和真实的运算结果保持维数一致,但是会有警告提示!
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
# 方式4 in-place
y.add_(x)
print(y)
索引操作(类似于numpy):
需要注意的是:索引出来的结果与原数据共享内存,也即修改一个,另一个会跟着修改。
y = x[0,:]
y += 1
print(y)
print(x[0, :]) # 源tensor也被更改
改变大小:如果你想改变一个 tensor 的大小或者形状,你可以使用 torch.view:
注意 view() 返回的新tensor与源tensor共享内存(其实是同一个tensor),也即更改其中的一个,另 外一个也会跟着改变。(顾名思义,view仅仅是改变了对这个张量的观察角度)
二、自动求导autograd
简介
autograd包是所有神经网络的核心,它为张量上的所有操作提供了自动求导机制。
属性 | 功能 |
---|---|
requires_grad | true:追踪张量操作 |
backward() | 计算所有梯度 |
detach() | 阻止计算记录跟踪 |
grad_fn | 引用创建Tensor自身的Function |
三、并行计算
分类
- 网络结构分布到不同的设备中(Network partitioning)
- 同一层的任务分布到不同数据中(Layer-wise partitioning)
- 不同的数据分布到不同的设备中,执行相同的任务(Data parallelism)