学习笔记 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,梯度:

 2,激活函数

1,sigmoid

 1,torch.sigmoid

import torch

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

print(a)

print(torch.sigmoid(a))

2, tanh

1,torch.tanh

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

print(b)

print(torch.tanh(b))

 3,Relu 

 

3,loss的梯度

1,均方误差,mse

用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]))

 

 2,softmax

4,感知机

1,单层感知机

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

导数推导过程:

2,多层感知机

 

 导数推导

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

5,链式法则

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

推导Wij:

7,cross_entropy

流程

代码实现

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那两句可以不写

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加速

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

relu

 能解决梯度离散的现象

Leaky  ReLU 

seLU

 

 

GPU加速

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值