注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
LitchiCheng的个人空间 https://home.eeworld.com.cn/space-uid-1003127.html [收藏] [复制] [分享] [RSS]
日志

一起读《动手学深度学习(PyTorch版)》- 多层感知机 - 激活函数

已有 195 次阅读2024-10-23 23:21 |个人分类:深度学习

多层感知机,隐藏层和输出层之间的全连接层如果全部是线性相关的话,那么多层感知机可以等价于单层感知机,因为线性关系的堆积仍然是线性的。激活函数的作用在于引入非线性因素,防止多层感知机退化为线性模型。

 

ReLU激活函数(Rectified linrear unit)

负数时导数为0,正数时导数为1

import torch
import torchvision
from torch.utils import data
from torchvision import transforms
import matplotlib.pyplot as plt
from torch import nn 

x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = torch.relu(x)
plt.plot(x.detach(), y.detach(), 'x', 'relu(x)')
plt.show()

 

y.backward(torch.ones_like(x), retain_graph=True)
plt.plot(x.detach(), x.grad, 'x', 'grad of relu')

 

sigmoid(squashing function)

sigmoid函数,将输入变换为区间(0, 1)上的输出,通常称为挤压函数(squashing function),低于0就是0,高于1就是1

当输入接近0时,sigmoid函数接近线性变换

import torch
import torchvision
from torch.utils import data
from torchvision import transforms
import matplotlib.pyplot as plt
from torch import nn 



if torch.cuda.is_available():
    device = torch.device("cuda")

x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True, device=device)
y = torch.sigmoid(x)
y=y.to(device)
plt.plot(x.to("cpu").detach(), y.to("cpu").detach(), '.', 'sigmoid(x)')
plt.show()

 

tanh(双曲正切)

-1,1的范围

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章