【激活函数--上】激活函数和阶跃函数的实现与理解

文章目录

  • 一、激活函数在神经网络中的作用与重要性
    • 1.1 理解激活函数的基本概念
    • 1.2 Sigmoid 函数的特性与应用
  • 二、Python中阶跃函数的实现与理解
    • 2.1 阶跃函数及其Python实现
    • 2.2 支持NumPy数组的阶跃函数实现

一、激活函数在神经网络中的作用与重要性

1.1 理解激活函数的基本概念

在神经网络中,激活函数扮演着至关重要的角色。它们的主要功能是引入非线性到一个基本上是线性的模型中,这使得神经网络能够学习和执行更复杂的任务,如分类和回归。在感知机模型中,通常使用的是阶跃函数作为激活函数,这意味着输出完全依赖于输入是否超过了某个固定阈值。

阶跃函数虽简单(后面会说到),但其突变式的输出变化限制了其应用,特别是在需要连续输出的场景中。为了解决这个问题,并使模型更加灵活,神经网络采用了如 Sigmoid 这样的平滑激活函数。Sigmoid 函数定义如下:
h ( x ) = 1 1 + e − x h(x) = \frac{1}{1 + e^{-x}} h(x)=1+ex1
其中 e e e 是自然对数的底数。Sigmoid 函数具有将输入值压缩到0和1之间的输出范围的特性,使其在概率模型中特别有用。

1.2 Sigmoid 函数的特性与应用

Sigmoid 函数的平滑曲线特性不仅能够处理二分类问题,在处理实值输出的需求中也表现出色,它可以为网络中的每一个节点提供一个清晰的、连续的激活级别。这种特性使得它在早期的神经网络中广泛应用,尤其是在反向传播算法中计算梯度时,Sigmoid 的连续性允许了更加精确的更新。

与阶跃函数相比,Sigmoid 函数的一个显著优势是其导数(即梯度)在整个输入空间内都是非零的,这对于基于梯度的优化算法非常重要。阶跃函数的梯度在大部分地方都是零,这使得在训练过程中无法有效地调整权重和偏置。

虽然 Sigmoid 函数曾经非常流行,但在现代深度学习中,由于其在输入值非常大或非常小的情况下导致的梯度消失问题,它已经逐渐被其他函数如 ReLU 取代。尽管如此,理解 Sigmoid 和其他激活函数的基本性质对于深入学习神经网络架构仍然非常重要。

二、Python中阶跃函数的实现与理解

2.1 阶跃函数及其Python实现

在神经网络的研究和实践中,阶跃函数作为一种激活函数,因其简单直观的特性被广泛了解。阶跃函数定义如下:
h ( x ) = { 0 if  x ≤ 0 1 if  x > 0 h(x) = \begin{cases} 0 & \text{if } x \leq 0 \\ 1 & \text{if } x > 0 \end{cases} h(x)={01if x0if x>0
这个函数在输入超过0时输出1,否则输出0,是理想化的二分类模型中的典型例子。

阶跃函数可以用Python的基本语法非常简洁地实现。最初的实现可能看起来如下:

def step_function(x):
    if x > 0:
        return 1
    else:
        return 0

这种实现适用于单个数值输入,对于处理大规模数据或数组则不够高效和实用。

2.2 支持NumPy数组的阶跃函数实现

为了使阶跃函数可以接受NumPy数组作为输入,从而便于在数据科学和神经网络模拟中使用,我们需要对上述函数进行改进。使用NumPy库可以简化这个过程,并扩展函数的功能,使其能够接受一个数组并对每个元素执行阶跃函数。改进后的实现如下:

import numpy as np

def step_function(x):
    y = x > 0
    return y.astype(np.int)

在这个实现中,x > 0是一个逐元素的操作,针对数组中的每个元素进行计算,并返回一个布尔数组。y.astype(np.int)将布尔值True和False分别转换为整数1和0。

使用NumPy进行阶跃函数的实现不仅优化了代码,也提高了计算效率。以下是使用该函数的一个简单示例:

x = np.array([-1.0, 1.0, 2.0])
y = step_function(x)
print(y)  # 输出: array([0, 1, 1])

在这个例子中,数组x包含三个元素。当我们传递xstep_function时,函数内部首先计算x > 0,得到一个布尔数组,然后使用astype(np.int)将布尔数组转换为整数数组,最终输出。

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

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

相关文章

封装一个可以最小化和展开的弹窗组件

gl-dialog 大概思路: 在弹窗组件内部引入gl-dialog-collapse,这个组件主要用于存储已经被最小化的弹窗(基础数据) 弹窗内部的数据如何在父组件拿到是通过作用域插槽来实现的 gl-dialog接收一个tempData这个数据会在内部被记录下来…

IDEA远程连接Docker服务

1.确保你的服务器已经安装docker docker安装步骤可查看:CentOS 9 (stream) 安装 Docker 2.安装完docker后开启远程连接 默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听…

【数据结构】栈(Stack)和队列(Queue)

文章目录 栈一、栈的概念及结构二、栈的特点三、栈的实现1.初始化栈2.判断栈空3.入栈4.出栈5.取栈顶元素6.栈的元素个数7.销毁 队列一、队列的概念及结构二、队列的特点三、队列的实现1.初始化2.入队3.出队4.判断队空5.取队头元素6.取队尾元素 总结 栈 一、栈的概念及结构 栈…

k8s 理论知识基本介绍

目录 一 k8s 理论前言 (一)微服务是什么 1,应用场景 2,API 是什么 (二),微服务 如何做版本迭代 1. Docker镜像构建 2. 版本标记 3. Docker Registry 4. 环境一致性 5. 滚动更新…

26 | 备库为什么会延迟好几个小时?

在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高、TPS 高时就会出现严重的主备延迟问题。 coordinator 就是原来的 sql_thread, 不过现在它不再直接更新数据了,只负责读取中转日志和分发事务。真正更新日志的,变成了 worker 线程。而 work 线程的个数,就是…

今日刷三题(day12):兑换零钱(一)+最长回文子串+编辑距离(一)

题目一:兑换零钱(一) 题目描述: 给定数组coins,coins中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数&…

单位圆内的正交向量多项式,第一部分:由Zernike多项式的梯度导出的基组

clear all; close all; clc; %% I1=double(imread(E:\zhenlmailcom-E8E745\华为家庭存\image\imgs\right\0.bmp)); I2=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.法\image\imgs\right\1.bmp)); I3=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.p\image\imgs…

学习torchmd分子动力学模拟

TorchMD打算提供一种简单易用的API,用于使用PyTorch进行分子动力学。这使研究人员能够更快地进行力场开发研究,并以PyTorch的简单性和强大性将神经网络潜力无缝集成到动力学中。 TorchMD使用与经典MD代码(如ACEMD)一致的化学单位&…

实在Agent智能体:引领智能自动化新纪元

在数字化转型的浪潮中,实在智能科技有限公司凭借其前沿技术,推出了实在Agent智能体——一款革命性的超自动化智能体。它不仅代表了人工智能技术的新高度,更预示着未来工作方式的变革。 什么是实在Agent智能体? 实在Agent智能体是…

《Fundamentals of Power Electronics》——状态空间平均法

文献中出现了许多交流变换器建模技术,包括电流注入法、电路平均法和状态空间平均法。尽管给定方法的支持者可能更喜欢用特定形式表示最终结果,但几乎所有方法的最终结果都是等效的。所有人都会赞同,平均和小信号线性化是PWM变换器建模的关键步…

云动态摘要 2024-05-06

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]即刻畅享自研SaaS产品 腾讯云 2024-04-25 涵盖办公协同、营销拓客、上云安全保障、数据分析处理等多场景 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

用得助全媒体呼叫中心,让AI落到实处帮品牌做营销

怎么让人工智能落到实处的帮助到我们?我们今天来讲讲中关村科金得助全媒体呼叫中心是怎么让AI帮品牌。 这次聊的案例是知名的护肤品牌,该品牌在中国功能性护肤品市场占有率达到20.5%,这么高的市场占有率客户的咨询量也是非常庞大的&#xff0…

MAC M1 配置 Git SSH

背景 换了新笔记本,本地想要克隆github 上的项目需要配置ssh 公钥到自己的github账户中,否则使用ssh 地址克隆会报错,如下。 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository.操作 1. 生成s…

探索大型语言模型(LLM)的世界

​ 引言 大型语言模型(LLM)作为人工智能领域的前沿技术,正在重塑我们与机器的交流方式,在医疗、金融、技术等多个行业领域中发挥着重要作用。本文将从技术角度深入分析LLM的工作原理,探讨其在不同领域的应用&#xff0…

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包,发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强,不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面,这样才能抓包https请求。 这里使用…

【Anaconda】升级Anaconda Navigator提示JSONDecoderError,删除.condarc文件后搞定

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、报错:JSONDecoderError二、错误原因三、解决问题总结 前言 提示:这里可以添加本文要记录的大概内容: 时间长未升级Ana…

AI 绘画神器 Fooocus 本地部署指南:简介、硬件要求、部署步骤、界面介绍

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 随着人工智能技术的飞速发展,AI 绘画逐渐成为创意领域的新宠。Fooocus 作为一款免费开源的 AI 绘画工具&am…

窜货溯源采买的目的

当品牌遇到窜货时,不管是线上还是线下渠道,快速的治理方法,就是找到窜货源头,对源头进行打击,这里面有一步很关键的操作便是买货,将货品买回后做溯源,通过产品本身或者外包装上的条码&#xff0…

【Java orm 框架比较】十 新增hammer_sql_db 框架对比

迁移到(https://gitee.com/wujiawei1207537021/spring-orm-integration-compare) orm框架使用性能比较 比较mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、dbvisitor、beetlsql、dream_orm、wood、hammer_sql_db 操作数据 …

[uniapp 地图组件] 小坑:translateMarker的回调函数,会调用2次

大概率是因为旋转和移动是两个动画,动画结束后都会分别调用此函数 即使你配置了 【不旋转】它还是会调用两次, 所以此处应该是官方的bug
最新文章