2021-10-13

主要参考


一、张量

3维=时间序列
时间序列数据是截断数据,每个截面是二维张量
eg:脑电波(EEG)信号编码

(time, frequency, channel)

eg:交易所每分钟内最高、最低和最终的股价存入一个2D张量(390,3)。如果我们追踪一周(五天)的交易,我们将得到这么一个3D张量

torch.Tensor 有自动求梯度的功能,且可GPU运算

二、tensor的创建

可以在dtype处指定类型

x = torch.zeros(4, 3, dtype=torch.long)

基于已存在的tensor创建

x = x.new_ones(4, 3, dtype=torch.double)
等价于
x = torch.ones(4, 3, dtype=torch.double)

三、torch的操作

torch.ones(4,3,dtype = torch.double)是一个对象(在内存有不可变的地址)
对象储存:id、value、type
x 是变量,变量储存值:变量的值,是变量到对象的指针
y=x
y和x的指向地址是一样的
x = torch.ones(5,3,dtype = torch.double)
在内存中新创建了一个对象,x指向新对象
y 仍然指向老对象,故y的值不变

x = torch.ones(4,3,dtype = torch.double)
y = x
x = torch.ones(5,3,dtype = torch.double)
print(y)

tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)

语句y = 1+y 和 语句 y+=1 完全不一样
+= 不会创建新对象,+会创建新对象(针对可变类型)
+= 直接改变了y指向的对象
在这里插入图片描述

四、自动求导

autograd包为张量上的所有操作提供了自动求导机制
反向传播是根据代码如何运行来决定的。
ps :反向传播就是链式法则求导的时髦名字

torch.Tensor 是这个包的核心类。
如果设置它的属性 .requires_grad 为 True,那么它将会追踪对于该张量的所有操作。
当完成计算后可以通过调用 .backward(),来自动计算所有的梯度。这个张量的所有梯度将会自动累加到.grad属性。
当创建一个张量时,张量的每个数,都是自变量。
张量的操作,就是函数。函数在每个点处,有梯度。梯度下降法,找最优值。

在这里插入图片描述
可以张量对张量求导
如果我们想要修改 tensor 的数值,但是又不希望被 autograd 记录(即不会影响反向传播), 那么我么可以对 tensor.data 进行操作。

并行计算

CUDA是我们使用GPU的提供商——NVIDIA提供的GPU并行计算框架。
PyTorch使用 CUDA表示要开始要求我们的模型或者数据开始使用GPU了。
在编写程序中,当我们使用了 cuda() 时,其功能是让我们的模型或者数据迁移到GPU当中,通过GPU开始计算。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值