学习笔记 Day54(梯度,激活函数)

内容

1,梯度:

2,激活函数

1,sigmoid

1,torch.sigmoid

2, tanh

1,torch.tanh

3,Relu

3,loss的梯度

1,均方误差,mse

2,softmax

4,感知机

1,单层感知机

2,多层感知机

5,链式法则

6,神经网络反向传播算法

7,cross_entropy

8,全连接层

9,激活函数与GPU加速

1,梯度:

学习笔记 Day54(梯度,激活函数)

2,激活函数

1,sigmoid

学习笔记 Day54(梯度,激活函数)

1,torch.sigmoid

import torch

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

print(a)

print(torch.sigmoid(a))

学习笔记 Day54(梯度,激活函数)

2, tanh

学习笔记 Day54(梯度,激活函数)

1,torch.tanh

b = torch.linspace(-1,1,10)

print(b)

print(torch.tanh(b))

学习笔记 Day54(梯度,激活函数)

3,Relu

学习笔记 Day54(梯度,激活函数)

学习笔记 Day54(梯度,激活函数)

3,loss的梯度

1,均方误差,mse

学习笔记 Day54(梯度,激活函数)

用pytorch求导:

import torch
from torch.nn import functional as F

x = torch.ones(1)

print(x)
w = torch.full([1],2.0)
print(w)

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

w.requires_grad_() # 对w进行更新,让它拥有求导信息

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

print(torch.autograd.grad(mse, [w]))

学习笔记 Day54(梯度,激活函数)

2,softmax

学习笔记 Day54(梯度,激活函数)

4,感知机

1,单层感知机

学习笔记 Day54(梯度,激活函数)

学习笔记 Day54(梯度,激活函数)

x中,上面的0表示是在第一层,下面的数字表示该层节点的编号,w中,上面的1表示层数,下面上一层的节点数,后面的表示该层层数

导数推导过程:

学习笔记 Day54(梯度,激活函数)

2,多层感知机

学习笔记 Day54(梯度,激活函数)

导数推导

学习笔记 Day54(梯度,激活函数)

这里去掉求和是因为wjk只会影响到ok和tk而其它项不影响,所以求和符号可以去掉

5,链式法则

学习笔记 Day54(梯度,激活函数)

6,神经网络反向传播算法

学习笔记 Day54(梯度,激活函数)

推导Wij:

学习笔记 Day54(梯度,激活函数)

7,cross_entropy

学习笔记 Day54(梯度,激活函数)

过程

学习笔记 Day54(梯度,激活函数)

代码

import  torch
from torch.nn import functional as F

x = torch.randn(1,784)
w = torch.randn(10,784)

# 建立公式

logits = x@w.t()
print(logits)

pre = F.softmax(logits,dim=1)
print(pre)

print(F.cross_entropy(logits,torch.tensor([2])))

pre那两句可以不写

学习笔记 Day54(梯度,激活函数)

8,全连接层

nn.Linear

class MLP(nn.Module):
    def __init__(self):
        super(MLP,self).__init__()

        self.model = nn.Sequential(  # nn.Sequential 一个容器,可以添加任何继承自nn.Module里面的类
            nn.Linear(784,200),
            nn.ReLU(inplace=True),
            nn.Linear(200,200),
            nn.ReLU(inplace=True),
            nn.Linear(200,10),
            nn.ReLU(inplace=True)

        )
    def forwaard(self,x):
        x  = self.model(x)
        return x
net = MLP()
optimizer = optim.SGD(net.parameters(),lr=0.01) # net.parameters() 装所有的参数(w,b) ,定义优化器
criteon = nn.CrossEntropyLoss() # 定义交叉熵

以后可以用来训练

9,激活函数与GPU加速

学习笔记 Day54(梯度,激活函数)

tanh是sigmoid函数经过缩放得到 (rnn)

relu

学习笔记 Day54(梯度,激活函数)

可以解决梯度分散现象

Leaky  ReLU

学习笔记 Day54(梯度,激活函数)

seLU

学习笔记 Day54(梯度,激活函数)

学习笔记 Day54(梯度,激活函数)

学习笔记 Day54(梯度,激活函数)

GPU加速

学习笔记 Day54(梯度,激活函数)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年3月18日 下午9:39
下一篇 2022年3月21日 上午10:06

相关推荐