2021-01-06

pytorch笔记 1.6

torch的理解

在torch中编写代码不是在做计算,而是在构建计算图。把它看成在构建计算图。

tensor基本数据类型成员

tensor是用来存数据的,可以存标量、向量、矩阵、高维度的tensor
该类型包含两个数据成员data(w)和grad(损失函数对w的导数)
torch中构建正向传播过程,会自动构建反向传播并保存反向传播的数据,所以torch在构建神经网络的模型时,就是在构建计算图。

w = torch.Tensor([1.0])
w.requires_grad = True  //True表示需要计算梯度

取tensor中的元素

pytorch中,tensor.item()方法 是得到一个元素张量里面的元素值,具体的数值。如果是tensor相互计算的话会产生计算图,而.item()不会

numpy_torch 与data转化

data = [-1,-2,1,2]
tensor = torch.FloatTensor(data)
numpy_data = tensor.numpy()
tensor = torch.from_numpy(numpy_data)
torch.mm(tensor1,tensor2)
np.matmul(numpy_data1,numpy_data2)
注意:对于torch的相关属性里面必须传入tensor类型的数据

更新梯度

tensor=tensor.requires_grad_(True) 注:true开启记录梯度d(tensor)
v_out = torch.mean(tensortensor) 注:定义求导函数v_out =1/4(tensor)**2
v_out.backward() 注:求导d(v_out)/d(tensor)=1/4
2*tensor=1/2tensor
tensor.grad 注:计算结果,把数带入到求导中,求得梯度即斜率

梯度清零

不清零就会造成下次使用grad梯度更新时,dw1在grad中加上下次更新的值dw2,就不是想要的grad结果。会造成grad计算反向传播会加速。不清零造成梯度累加

w.grad.data.zero_()

Variable

现在版本的Variable(用来放torch.tensor)就是等同于troch.tensor的作用,可以不使用Variable了

linspace与tensor的维度改变

  • torch.linspace(-5,5,200)
    表示(-5,5)等分取点200个,就是一个(200,1)的向量
  • .view((200,1))相当于np.reshape((200,1))
x = np.linspace(0, 10, 200)
x_t = torch.Tensor(x).view((200,1))

激活函数

import torch.nn.functional as F
F.relu(x)
F.softplus(x)(接近于relu的平滑曲线)
torch.sigmoid(x)
torch.tanh(x)

loss function &&Cost function

Training Loss(ERROR)样本
loss = (y~-y)**2 = (w*x - y)**2

Mean Square Error 编程MSE training set
cost = 1/N Σ(y~n-yn)**2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值