Pytorch学习笔记3

Pytorch学习笔记3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
激活函数:
在这里插入图片描述
Sigmoid函数求导
theta‘=theta(1-theta)

在这里插入图片描述

a=torch.linspace(-100,100,10)
torch.sigmoid(a)

Tanh激活函数:
在这里插入图片描述
ReLU激活函数:
在这里插入图片描述
在这里插入图片描述

LOSS函数:

在这里插入图片描述
在这里插入图片描述
pytorch自动求导:
torch.autograd.grad(mse,[w])
在这里插入图片描述

backward函数求导

mse=F.mse_loss(torch.ones(1),x*w)
mse.backward()

Gradient API

在这里插入图片描述

Softmax

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

F.softmax

a=torch.rand(3)
a.requires_grad_()
p=F.softmax(a,dim=0)
p.backward()
p=F.softmax(a,dim=0)

在这里插入图片描述

感知机的梯度推导

在这里插入图片描述
导数推导:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多输出感知机

在这里插入图片描述
在这里插入图片描述
链式法则:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先计算输出层,再计算倒数第二层,一直迭代,最后得到全部的梯度
在这里插入图片描述

2D函数优化实例

在这里插入图片描述
x=np.arrange(-6,6,0.1)
np.meshgrid(x,y)
将两张map拼在一起,包含x,y的坐标

在这里插入图片描述

Logistic regression

Linear:y=xw+b
for probablility output:
在这里插入图片描述
为什么不能直接最大化准确率?

在这里插入图片描述
在这里插入图片描述
Softmax可以满足概率和为1,并且能使大概率的更大。

crossentrophy loss

在这里插入图片描述
结论:最小化交叉熵相当于最小化散度(两个分布的区别程度)

Binary classification

在这里插入图片描述
在这里插入图片描述
为什么不用MSE?

  1. sigmoid+MSE可能产生梯度消失
  2. 收敛更慢
  3. 有些领域可以使用(meta-learning)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一定要加入初始化操作

全连接层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
self.model=nn.Sequential(
nn.Linear(784,200),
nn.ReLu(inplace=True),
nn.Linear(200,200),…

def forward(self,x)
x=self.model(x)
return x

API区分

在这里插入图片描述
nn.Linear,nn.Relu是类风格,需要先实例化
layer=nn.Relu()
x=layer(x)
为方便,可以使用x=F.relu(x,inplace=True)直接输出经过relu的x结果。

在这里插入图片描述

激活函数

ReLU避免了梯度爆炸与消失的情况,计算更加简单

Leaky ReLU
在这里插入图片描述
在这里插入图片描述

SELU:
在这里插入图片描述
在这里插入图片描述
部署到GPU上:
device=torch.device(‘cuda:0’)
net=MLP().to(device)

criteon=nn.CrossEntrophyLoss().to(device)

data,target=data.to(device), target.cuda()#不推荐第二个
在这里插入图片描述

MNIST test

在这里插入图片描述
softmax不会改变单调性,因此在softmax之前还是之后进行argmax效果相同
在这里插入图片描述
pred_label=pred.argmax(dim=1)可以求出predict的值
而后使用
correct=torch.eq(pred_label,label)
correct.sum().float().item()/4#item将tensor转为值

在这里插入图片描述

Visdom可视化

之前我都是使用TensorBoard:
在这里插入图片描述
Pytorch拥有TensorboardX
pip install tensorboardX

在这里插入图片描述
但是必须使用numpy数据,比较麻烦。

Visdom可以直接使用tensor数据

pip install visdom
python -m visdom.server

from visdom import Visdom

画曲线

viz=Visdom()
viz.line([0.],[0.],win='train_loss', opts-dict(title='train loss'))
viz.line([loss.item()],[global_step],win='train_loss',update='append')
#loss转换为数据,使用append防止数据被刷新。
#顺序为y,x

在这里插入图片描述
multi-traces:

viz=Visdom()
viz.line([0.],[0.],win='train_loss', opts-dict(title='train loss'))

在这里插入图片描述
在这里插入图片描述

visual X

在这里插入图片描述
viz.images(data.view(-1,1,28,28),win=‘x’)
viz.text(str(pred.detach()/cpu().numpy()),win=‘pred’,opts=dict(title=‘pred’))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值