当前位置: 首页 > news >正文

神经网络|(二)sigmoid神经元函数

【1】引言

在前序学习进程中,我们已经了解了基本的二元分类器和神经元的构成,文章学习链接为:

神经网络|(一)加权平均法,感知机和神经元-CSDN博客

在此基础上,我们认识到神经元本身在做二元分类,是一种非此即彼的选择。

由于不同的数据所占的权重不同,二元分类结果也一定收到权重的影响,为此,必须使用数学表达这种影响力。

在神经网络相关研究的漫长发展进程中,研究范围从单个因素到多个因素,必须关注无数的二元分类结果同时作用后获得的最终分类结果,于是sigmoid()函数被提出。

【2】二元分类结果数学表达

认识感知机的二元分类本质,是研究sigmoid()函数的基础。

这里先创造四个矩阵,这三个矩阵分别代表元素1,元素2,元素1和权重和元素2的权重。

import numpy as np #引入numpy模块
import matplotlib.pyplot as plt #引入matplotlib模块#创造矩阵
a = np.random.randint(5,9,size=(1,5)) #矩阵
b = np.random.randint(1,5,size=(1,5)) #矩阵
c = np.random.randn(1,5) #矩阵
d = np.random.randn(1,5) #矩阵
#阈值开关
k=1
#空矩阵
e =np.zeros((1,5),np.uint8) #用来存储二元分类的计算结果

进行二元分类计算:

#二元分类计算
for i in range (5):if a[0,i]*c[0,i]+b[0,i]*d[0,i]-k>0: #阈值计算,满足条件时取1,否则取0e[0,i]=1else:e[0,i]=0print('e[0,',i,']=',e[0,i]) #输出阈值计算结果

绘制二元分类的效果:

#绘制二元分类计算的结果
print('a=',a) #输出矩阵
print('b=',b) #输出矩阵
print('c=',c) #输出矩阵
print('d=',d) #输出矩阵
x=np.arange(0,5,1) #定义一个自变量
plt.plot(x,e[0,x]) #对阈值计算结果绘图
plt.savefig('ganzhiji.png') #保存图像
plt.show() #输出图像

这里使用的阈值判断函数为:

for i in range (5):if a[0,i]*c[0,i]+b[0,i]*d[0,i]-k>0: #阈值计算,满足条件时取1,否则取0e[0,i]=1else:e[0,i]=0

代码运行后的输出图像为:

图1

图1真实地反映了非此即彼的二元分类效果。

需要注意的是,由于元素的权重使用随机数生成,所以每次运行上述程序,获得的效果可能不一样。

【3】sigmoid函数

实际上,二元分类效果可能不是两个元素算一次就进行判断,而是多个结果互相叠加在一起,也就是把阈值判断函数改为:

f=0 #用来存储二元分类的综合计算结果
#二元分类计算
for i in range (5):if i==0:e[0, i] = a[0, i] * c[0, i] + b[0, i] * d[0, i] - k  # 阈值计算else:e[0, i] = a[0, i] * c[0, i] + b[0, i] * d[0, i] - k+e[0,i-1]  # 阈值计算
if e[0,4]>0: #最后计算结果,超过阈值开关取1,否则取0f=1
else:f=0

代码运行后,获得的输出图像为:

图2

此时获得的数据分别为:

图3

由图3可见,因为最后的e[0,4]>0,所以f=1。

此时的完整代码为:

import numpy as np #引入numpy模块
import matplotlib.pyplot as plt #引入matplotlib模块#创造矩阵
a = np.random.randint(5,9,size=(1,5)) #矩阵
b = np.random.randint(1,5,size=(1,5)) #矩阵
c = np.random.randn(1,5) #矩阵
d = np.random.randn(1,5) #矩阵
#阈值开关
k=1
#空矩阵
e =np.zeros((1,5),np.uint8) #用来存储二元分类的计算结果
f=0 #用来存储二元分类的综合计算结果
#二元分类计算
for i in range (5):if i==0:e[0, i] = a[0, i] * c[0, i] + b[0, i] * d[0, i] - k  # 阈值计算else:e[0, i] = a[0, i] * c[0, i] + b[0, i] * d[0, i] - k+e[0,i-1]  # 阈值计算
if e[0,4]>0: #最后计算结果,超过阈值开关取1,否则取0f=1
else:f=0#绘制二元分类计算的结果
print('a=',a) #输出矩阵
print('b=',b) #输出矩阵
print('c=',c) #输出矩阵
print('d=',d) #输出矩阵
print('e=',e) #输出矩阵
print('f=',f) #输出矩阵
x=np.arange(0,5,1) #定义一个自变量
plt.plot(x,e[0,x]) #对阈值计算结果绘图
plt.savefig('ganzhiji.png') #保存图像
plt.show() #输出图像

sigmoid()函数就是在上述基础上,进一步优化函数表达式,把所有的加权计算结果变成指数函数的变量,并且指数函数还设置成分式的一部分。相应的,有如下函数:

f(x)=\frac{1}{1+exp(-\sum {w}_j{x}_j-b)}

如果把-w_{j}x_{j}-b简化为-x,该函数相应简化为:

f(x)=\frac{1}{1+exp(-x)}

函数对应的图像为:

图4

图4是平滑过渡图像,并且输出结果限定在(0,1)范围内。

绘制图4的代码为:

import numpy as np #引入numpy模块
import matplotlib.pyplot as plt #引入matplotlib模块#创造矩阵
t=np.linspace(-10,10,100) #自变量
y0=np.exp(-t) #指数函数
y=1/(1+y0) #因变量
plt.plot(t,y) #绘制图像
plt.title('sigmoid() function') #图像上设置图名
plt.savefig('sigmoid() function.png') #保存图像
plt.show() #显示图像

【4】函数验证

为验证sigmoid()函数,可以在上述示例中的代码plt.plot(x,e[0,x]) #对阈值计算结果绘图

修改为:

plt.plot(x,1/(1+np.exp(-e[0,x]))) #对阈值计算结果绘图

此时运行代码获得的图像为:

图5

由图5可见,复杂多变的实际情况中,sigmoid()函数的输出结果也是在(0,1)范围内。所以,sigmoid()函数本身具有很强的实用性。

此时的完整代码为:

import numpy as np #引入numpy模块
import matplotlib.pyplot as plt #引入matplotlib模块#创造矩阵
a = np.random.randint(5,9,size=(1,5)) #矩阵
b = np.random.randint(1,5,size=(1,5)) #矩阵
c = np.random.randn(1,5) #矩阵
d = np.random.randn(1,5) #矩阵
#阈值开关
k=1
#空矩阵
e =np.zeros((1,5),np.uint8) #用来存储二元分类的计算结果
f=0 #用来存储二元分类的综合计算结果
#二元分类计算
for i in range (5):if i==0:e[0, i] = a[0, i] * c[0, i] + b[0, i] * d[0, i] - k  # 阈值计算else:e[0, i] = a[0, i] * c[0, i] + b[0, i] * d[0, i] - k+e[0,i-1]  # 阈值计算
if e[0,4]>0: #最后计算结果,超过阈值开关取1,否则取0f=1
else:f=0#绘制二元分类计算的结果
print('a=',a) #输出矩阵
print('b=',b) #输出矩阵
print('c=',c) #输出矩阵
print('d=',d) #输出矩阵
print('e=',e) #输出矩阵
print('f=',f) #输出矩阵
x=np.arange(0,5,1) #定义一个自变量
plt.plot(x,1/(1+np.exp(-e[0,x]))) #对阈值计算结果绘图
plt.savefig('sigmoid.png') #保存图像
plt.show() #输出图像

需要注意的是,由于元素的权重使用随机数生成,所以每次运行上述程序,获得的效果可能不一样。

【5】总结

探究了sigmoid()函数,研究了多因素的综合作用。

相关文章:

神经网络|(二)sigmoid神经元函数

【1】引言 在前序学习进程中,我们已经了解了基本的二元分类器和神经元的构成,文章学习链接为: 神经网络|(一)加权平均法,感知机和神经元-CSDN博客 在此基础上,我们认识到神经元本身在做二元分类,是一种非…...

w-form-select.vue(自定义下拉框组件)(与后端字段直接相关性)

文章目录 1、w-form-select.vue 组件中每个属性的含义2、实例3、源代码 1、w-form-select.vue 组件中每个属性的含义 好的,我们来详细解释 w-form-select.vue 组件中每个属性的含义,并用表格列出它们是否与后端字段直接相关: 属性解释表格&…...

【JVM】垃圾收集器详解

你将学到 1. Serial 收集器 2. ParNew 收集器 3. Parallel Scavenge 收集器 4. Serial Old 收集器 5. Parallel Old 收集器 6. CMS 收集器 7. G1 收集器 在 Java 中,垃圾回收(GC)是自动管理内存的一个重要机制。HotSpot JVM 提供了多种…...

python创建一个httpServer网页上传文件到httpServer

一、代码 1.server.py import os from http.server import SimpleHTTPRequestHandler, HTTPServer import cgi # 自定义请求处理类 class MyRequestHandler(SimpleHTTPRequestHandler):# 处理GET请求def do_GET(self):if self.path /:# 响应200状态码self.send_response(2…...

【Maui】提示消息的扩展

文章目录 前言一、问题描述二、解决方案三、软件开发(源码)3.1 消息扩展库3.2 消息提示框使用3.3 错误消息提示使用3.4 问题选择框使用 四、项目展示 前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移…...

租车骑绿岛

租车骑绿岛 真题目录: 点击去查看 E 卷 100分题型 题目描述 部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重M。给出部门每个人的体重,请问最多需要租用多少双人自行车。 输入描述 第一行两个数字m、n&…...

Pytorch - YOLOv11自定义资料训练

►前言 本篇将讲解目前最新推出的YOLOv11搭配Roboflow进行自定义资料标注训练流程,透过Colab上进行实作说明,使大家能够容易的了解YOLOv11的使用。 ►YOLO框架下载与导入 ►Roboflow的资料收集与标注 进行自定义资料集建置与上传 透过Roboflow工具进行…...

微服务与docker

准备工作 在课前资料中给大家提供了黑马商城项目的资料,我们需要先导入这个单体项目。不过需要注意的是,本篇及后续的微服务学习都是基于Centos7系统下的Docker部署,因此你必须做好一些准备: Centos7的环境及一个好用的SSH客户端装好Docker会使用Docker如果是学习过上面Doc…...

1.23 消息队列

使用消息队列&#xff0c;实现两个终端相互聊天 程序代码&#xff1a; w1.c #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h&g…...

【华为路由的arp配置】

华为路由的arp配置 ARP&#xff1a;IP地址与MAC地址的映射。 R1: g0/0/0:10.1.1.254/24 g0/0/1:10.1.2.254/24 PC1: 10.1.1.1/16 PC2: 10.1.1.2/16 PC3: 10.1.2.3/16 动态ARP 查看PC1的arp表&#xff0c;可以看到&#xff0c;列表为空。 查看R1的arp表 在PC3上ping命令测…...

绘制决策树的尝试1

代码复制 import pydotplus 复制 - 这一行代码用于导入pydotplus模块&#xff0c;这是一个用来在Python中创建图形的工具。2. python from IPython.display import Image 这一行代码用于从IPython显示模块中导入Image类&#xff0c;它允许我们在Jupyter笔记本中显示图像。…...

概率论里的特征函数,如何用卷积定理去理解

概率论里的特征函数&#xff0c;如何用卷积定理去理解_哔哩哔哩_bilibili...

Spring 是如何解决循环依赖问题

Spring 框架通过 三级缓存 机制来解决循环依赖问题。循环依赖是指两个或多个 Bean 相互依赖&#xff0c;形成一个闭环&#xff0c;例如 Bean A 依赖 Bean B&#xff0c;而 Bean B 又依赖 Bean A。Spring 通过提前暴露未完全初始化的 Bean 来解决这个问题。 以下是 Spring 解决…...

Linux 目录操作详解

Linux目录操作详解 1. 获取当前工作目录1.1 getcwd()1.2 get_current_dir_name() 2. 切换工作目录2.1 chdir() 3. 创建和删除目录3.1 mkdir()3.2 rmdir() 4. 获取目录中的文件列表4.1 opendir() 打开目录4.2 readdir() 读取目录内容4.3 closedir() 关闭目录 5. dirent 结构体6.…...

Elasticsearch的经典面试题及详细解答

以下是一些Elasticsearch的经典面试题及详细解答&#xff1a; 一、基础概念与原理 什么是Elasticsearch&#xff1f; 回答&#xff1a; Elasticsearch是一个基于Lucene的分布式搜索引擎&#xff0c;提供了RESTful API&#xff0c;支持多租户能力。它能够快速、近实时地存储、搜…...

Linux-arm(1)ATF启动流程

Linux-arm(1)ATF启动流量 Author&#xff1a;Once Day Date&#xff1a;2025年1月22日 漫漫长路有人对你微笑过嘛… 全系列文章可查看专栏: Linux实践记录_Once_day的博客-CSDN博客 参考文档&#xff1a; ARM Trusted Firmware分析——启动、PSCI、OP-TEE接口 Arnold Lu 博…...

C#编程:List.ForEach与foreach循环的深度对比

在C#中&#xff0c;List<T>.ForEach 方法和传统的 foreach 循环都用于遍历列表中的元素并对每个元素执行操作&#xff0c;但它们之间有一些关键的区别。 List<T>.ForEach 方法 方法签名&#xff1a;public void ForEach(Action<T> action)类型&#xff1a;…...

C语言文件操作:标准库与系统调用实践

目录 1、C语言标准库文件操作 1.1.题目要求&#xff1a; 1.2.函数讲解&#xff1a; fopen 函数原型 参数 常用的打开模式 返回值 fwrite函数 函数原型 参数 返回值 注意事项 fseek函数 函数原型 参数 返回值 fread函数 函数原型 参数 返回值 fclose 函数…...

代码随想录 栈与队列 test 7

347. 前 K 个高频元素 - 力扣&#xff08;LeetCode&#xff09; 首先想到哈希&#xff0c;用key来存元素&#xff0c;value来存出现次数&#xff0c;最后进行排序&#xff0c;时间复杂度约为o(nlogn)。由于只需求前k个&#xff0c;因此可以进行优化&#xff0c;利用堆来维护这…...

C语言练习(21)

有一行电文&#xff0c;已按下面规律译成密码&#xff1a; A→Za→Z B→Yb→y C→Xc→X 即第1个字母变成第26个字母&#xff0c;第2个字母变成第25个字母&#xff0c;第i个字母变成第&#xff08;26-i十1&#xff09;个字母。非字母字符不变。假如已知道密码是Umtorhs&…...

DeepSeek系统设计辅助效能断崖式下降的3个信号,第2个90%工程师至今未察觉!

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek系统设计辅助效能断崖式下降的3个信号&#xff0c;第2个90%工程师至今未察觉&#xff01; 当 DeepSeek 的系统设计辅助能力突然变“笨”——接口建议频繁失准、上下文感知错乱、生成代码无法通过基础编…...

如何用SMUDebugTool彻底掌控你的AMD Ryzen处理器性能调优

如何用SMUDebugTool彻底掌控你的AMD Ryzen处理器性能调优 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.co…...

别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务

别再只用Service了&#xff01;ROS1 Action通信保姆级教程&#xff1a;从导航进度条到任务取消&#xff0c;手把手教你实现带反馈的机器人任务当你的机器人正在执行一个长达10分钟的导航任务时&#xff0c;突然发现目标点设置错误&#xff0c;这时候如果只能干等着任务完成或者…...

AI大模型应用开发全攻略:从入门到精通,掌握LLM、RAG、Agent核心技能!“

本文全面介绍了AI大模型应用开发的核心技术和实践。从大模型API交互基础&#xff0c;到关键参数Messages和Tools的作用&#xff0c;深入解析了RAG、ReAct、Agent等应用范式。文章还探讨了Fine-tuning微调和Prompt提示词工程的重要性&#xff0c;强调工程实践与业务需求相结合。…...

Yokogawa AAI835-H50/K4A00模拟输入/输出模块

Yokogawa AAI835-H50/K4A00 模拟输入/输出模块产品特点&#xff1a;通道配置&#xff1a;共8个通道&#xff0c;含4路模拟输入和4路模拟输出。信号类型&#xff1a;所有通道均支持4-20mA标准电流信号。HART通信&#xff1a;支持HART协议&#xff0c;可与智能现场设备双向数字通…...

数组专项(一):数组排序、去重、查找

大家好,欢迎来到《算法面试60讲(2026最新版全真题带解析)》第19篇!上一篇我们彻底吃透了字符串专项的核心难点——BF暴力匹配与KMP高效匹配算法,搞定了字符串模块面试最难的算法考点。从本节课开始,我们正式进入算法面试第一高频模块:数组专项。 在算法面试中,数组是出…...

SSH工具对比:新手用户和熟练运维,选型逻辑有什么不同

结论 新手用户和熟练运维在选择 SSH 工具时&#xff0c;关注点往往完全不同。 新手更在意的是&#xff1a;能不能顺利连接、界面是否直观、文件和配置是否容易找到、网站出问题时能不能快速定位。 而熟练运维更在意的是&#xff1a;连接效率、命令自由度、多服务器管理能力、原…...

孤舟笔记 互联网常用框架篇二 Dubbo服务请求失败怎么处理?集群容错策略你用过几种

文章目录先说结论Failover&#xff1a;换家店试试Failfast&#xff1a;不行就算了Failsafe&#xff1a;忘了这事Failback&#xff1a;回头再说Forking&#xff1a;同时点几家Broadcast&#xff1a;通知所有人怎么选择回答技巧与点评加分回答面试官点评个人网站分布式系统中&…...

YOLOv8晶圆体缺识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)

摘要 晶圆制造过程中的缺陷检测是保证芯片良率的关键环节。本文基于YOLOv8目标检测算法&#xff0c;构建了一套针对晶圆表面9类典型缺陷的自动检测系统。所识别的缺陷类型包括&#xff1a;Center、Donut、Edge-Loc、Edge-Ring、Loc、Near-full、None、Random、Scratch。模型在…...

免费抓包工具选型指南:Wireshark、Fiddler、mitmproxy、Charles实战对比

1. 抓包工具不是“黑科技”&#xff0c;而是网络世界的显微镜很多人第一次听说“抓包”&#xff0c;脑子里立刻浮现出黑客电影里满屏滚动的绿色代码、键盘敲得噼啪作响、三秒破解银行防火墙的画面。其实完全不是这样——抓包&#xff08;Packet Capture&#xff09;本质上就是把…...