【Python】Sigmoid和Hard Sigmoid激活函数对比总结及示例

Sigmoid和Hard Sigmoid是两种常用的激活函数,它们在神经网络中起到非线性变换的作用。以下是它们之间的对比和优缺点总结:

Sigmoid激活函数:

优点:

  1. 输出范围是0到1之间,可以用于二分类问题。
  2. 函数形状相对平滑,有助于减小梯度消失问题。
    缺点:

在输入非常大或非常小的值时,会出现梯度消失的情况,导致网络训练困难。
计算量大,因为需要计算指数函数。
输出不是以0为中心,有时会影响网络的训练。

Hard Sigmoid激活函数:

优点:
计算量较小,因为不需要计算指数函数。
输出是以0为中心的,有助于网络的训练。
输出范围是[0,1],可以用于二分类问题。

缺点:
相对于Sigmoid函数,其输出不是非常平滑,可能导致梯度消失问题。
在输入值接近于0时,其梯度接近于0,可能会影响网络的训练。
在处理多分类问题时,需要使用Softmax函数作为输出层,而Hard Sigmoid与Softmax的组合可能不如Sigmoid与Softmax的组合稳定。

总结:
选择激活函数需要根据具体的应用场景和需求来决定。如果需要处理二分类问题并且对计算量要求较高,可以考虑使用Hard Sigmoid。如果对网络的稳定性和平滑性要求较高,可以选择使用Sigmoid激活函数。

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
# Sigmoid激活函数
sigmoid = nn.Sigmoid()
sigmoid_inputs = torch.arange(-10, 10, 0.1)
sigmoid_outputs = sigmoid(sigmoid_inputs)
print("Sigmoid Function Input :: {}".format(sigmoid_inputs))
print("Sigmoid Function Output :: {}".format(sigmoid_outputs))

plt.subplot(1, 2, 1)
plt.plot(sigmoid_inputs,sigmoid_outputs)
plt.title('Sigmoid')

# Hard Sigmoid激活函数
hard_sigmoid = nn.Hardsigmoid()
hard_sigmoid_inputs = torch.arange(-10, 10, 0.1)
hard_sigmoid_outputs = hard_sigmoid(hard_sigmoid_inputs)
print("Hard Sigmoid Function Input :: {}".format(hard_sigmoid_inputs))
print("Hard Sigmoid Function Output :: {}".format(hard_sigmoid_outputs))
plt.subplot(1, 2, 2)
plt.plot(hard_sigmoid_inputs,hard_sigmoid_outputs)

plt.title('Hard Sigmoid')
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/309503.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】组合两个表(mysql)

题目 编写解决方案,报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为 null 。 以 任意顺序 返回结果表。 结果格式如下所示。 答 select firstName ,lastName,city,state from Person left join Address …

使用pygame.draw绘制基本图形

import pygame# 初始化pygame pygame.init()# 创建显示窗口 screen pygame.display.set_mode((640, 480)) pygame.display.set_caption("绘制基本图形")# 定义颜色 BLACK (0, 0, 0) WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)…

Mac安装nvm以及使用nvm安装node

1. 安装nvm命令 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags2. 配置环境变量 vi ~/.bash_profileexport NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &&…

网络安全工具:通过监控分析日志数据保护企业网络

由于混合工作模式的兴起以及业务运营向云环境的迁移,企业网络变得更加分散和复杂,仅安装外围安全解决方案只会创建一个基本的防御层,系统、服务器和其他网络实体会生成记录所有网络活动的日志。集中式日志管理系统可以帮助管理员自动监控网络…

【教学类-45-06】正确 X-Y之间的三连加减题混合 (竖向排列)(44格:11题“++ ”11题“--”11题“ +-”11题“ -+” )

作品展示: 背景需求: 把以下四款3连题 混在一起,每种题目随机抽取11题,一共44格 出现问题: 1、- 、-里面有重复题 2、升序排列最好竖排展示 素材准备: ​ ​ 问题改正 1、单元格修改:确保竖列写入 …

【elastic search】JAVA操作elastic search

目录 1.环境准备 2.ES JAVA API 3.Spring Boot操作ES 1.环境准备 本文是作者ES系列的第三篇文章,关于ES的核心概念移步: https://bugman.blog.csdn.net/article/details/135342256?spm1001.2014.3001.5502 关于ES的下载安装教程以及基本使用&…

鸿蒙Harmony--状态管理器--@Prop详解

纵横千里独行客,何惧前路雨潇潇。夜半浊酒慰寂寞,天明走马入红尘。且将新火试新茶,诗酒趁年华。青春以末,壮志照旧,生活以悟,前路未明。时间善变,可执着翻不了篇。时光磨我少年心,却…

正则表达式、文件访问(Python实现)

一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…

HelpLook VS Docusaurus:SaaS 知识库软件和 SSG 的对比

在选择文档工具时,需要考虑多个因素,如功能、易用性、成本等。Docusaurus是一个开源工具,它因其灵活性而受到文档团队的青睐,尤其是负责软件产品文档的团队。有些组织甚至可能要求使用开源软件,因此选择一个开源工具如…

读元宇宙改变一切笔记04_网络化

1. 思想实验 1.1. 如果森林中的一棵树倒下,但周围没有人听到,那它是否会发出声音? 1.1.1. “贝克莱的树” 1.2. 主观唯心主义哲学家乔治贝克莱(George Berkeley)提出的,他认为“存在就是被感知” 1.2.1. 如果有人或有其他事物…

CMake入门教程【高级篇】qmake转cmake

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1. 概述2.qmake与cmake的差异3. qmake示例4.qmake转cmake示例5.MOC、UIC和RCC…

1991-2022年A股上市公司股价崩盘风险指标数据

1991-2022年A股上市公司股价崩盘风险指标数据 1、时间:1991-2022年 2、来源:整理自csmar 3、指标:证券代码、交易年度、NCSKEW(分市场等权平均法)、NCSKEW(分市场流通市值平均法)、NCSKEW(分市场总市值平均法); NCSKEW(综合市…

网络协议与攻击模拟_03实施ARP欺骗和攻击

一、ARP攻击 1、实验环境 kali Linux (安装arpspoof工具)被攻击主机 2、kali配置 kali Linux系统是基于debian Linux系统,采用deb包管理方式,可以使用apt源的方式进行直接从源的安装。 配置kali网络源 vim /etc/apt/sources…

本地远程实时获取无人机采集视频图像(天空端 + jetson nano + 检测分割 + 回传地面端显示)

1、无线图传设备介绍 2、jetson nano天空端数据采集检测保存 3、本地回传显示 1、无线图传设备介绍 由于本设计考虑将无人机得到检测结果实时回传给地面站显示,因此需要考虑一个远程无线通信设备进行传输。本设计采用思翼HM30图传设备。通过无线图传的wifi将天空端…

基于JavaWeb+BS架构+SpringBoot+Vue协同过滤算法的体育商品推荐系统的设计和实现

基于JavaWebBS架构SpringBootVue协同过滤算法的体育商品推荐系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 绪 论 1 1.1项目背景 1 1.2研究意义 2 1.3设计目的 2 1.…

【动态规划】C++ 算法458:可怜的小猪

作者推荐 视频算法专题 涉及知识点 动态规划 数学 力扣458:可怜的小猪 有 buckets 桶液体,其中 正好有一桶 含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否…

ROS2——开发第一个节点

ROS2 的包必须在 src 文件夹下,使用下面的命令创建一个包,并设置相关的依赖 ros2 pkg create my_package --dependencies rclcpp std_msgs可以打开包内的 package.xml ,查看 depend 有哪些依赖 #include "rclcpp/rclcpp.hpp" int …

路由黑洞和黑洞路由的区别

路由黑洞: 路由黑洞是一种现象,一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,就是汇总的时候有时会有一些不在内网中存在的网段,但是又包含在汇总后的网段中,如果在这个汇总的边界设备上同时还配…

QML实现的图片浏览器

很久之前实现了一个QWidget版本的图片浏览器:基于Qt5的图片浏览器QHImageViewer 今天用QML也实现一个,功能差不多: ●悬浮工具栏 ●支持图片缩放、旋转、还原、旋转、拖动。 ●拖动图片时,释放鼠标图片会惯性滑动。 ●支持左右翻页查看文件夹中的图片。 ●支持保存图片至本…

03MyBatis完成CRUD+命名空间

准备工作 ○ 创建module(Maven的普通Java模块):mybatis-002-crud ○ pom.xml ■ 打包方式jar ■ 依赖: ● mybatis依赖 ● mysql驱动依赖 ● junit依赖 ● logback依赖 ○ mybatis-config.xml放在类的根路径下 ○ CarMapper.xml放…