神经网络基础-神经网络补充概念-26-前向和反向传播
简单比较
前向传播(Forward Propagation):
前向传播是神经网络中的正向计算过程,用于从输入数据开始,逐层计算每个神经元的输出值,直到得到最终的预测值。在前向传播过程中,我们按以下步骤进行:
输入数据:将输入数据传递给输入层。
加权求和:对每个神经元的输入进行加权求和,即将输入与权重相乘并加上偏差。
激活函数:将加权求和的结果输入激活函数(如Sigmoid、ReLU等),得到神经元的输出。
传递至下一层:将当前层的输出作为下一层的输入,重复步骤 2 和 3,直到达到输出层,得到最终的预测值。
反向传播(Backward Propagation):
反向传播是神经网络中的梯度计算和权重更新过程,用于根据损失函数计算每个参数的梯度,然后根据梯度信息更新网络的权重和偏差。在反向传播过程中,我们按以下步骤进行:
计算损失:使用损失函数计算预测值与真实标签之间的差距。
计算梯度:通过链式法则,从输出层开始,逐层计算每个参数的梯度,传递梯度至前一层。对于每一层,计算权重和偏差的梯度,以及当前层输入的梯度。
参数更新:使用计算得到的梯度信息,根据优化算法(如梯度下降法、Adam等)更新每个参数的值,以减小损失函数。
重复迭代:重复进行前向传播和反向传播,多次迭代,直到损失函数足够小或达到预定的迭代次数。
前向传播和反向传播是神经网络训练的基石,通过不断地在这两个过程中更新参数,神经网络逐渐优化其性能,从而能够更好地进行预测和模式识别任务。
代码实现
import numpy as np# Sigmoid 激活函数及其导数
def sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):return x * (1 - x)# 初始化参数
def initialize_parameters(input_size, hidden_size, output_size):parameters = {'W1': np.random.randn(hidden_size, input_size),'b1': np.zeros((hidden_size, 1)),'W2': np.random.randn(output_size, hidden_size),'b2': np.zeros((output_size, 1))}return parameters# 前向传播
def forward_propagation(X, parameters):W1, b1, W2, b2 = parameters['W1'], parameters['b1'], parameters['W2'], parameters['b2']Z1 = np.dot(W1, X) + b1A1 = sigmoid(Z1)Z2 = np.dot(W2, A1) + b2A2 = sigmoid(Z2)cache = {'Z1': Z1, 'A1': A1, 'Z2': Z2, 'A2': A2}return A2, cache# 计算损失
def compute_loss(A2, Y):m = Y.shape[1]loss = -np.sum(Y * np.log(A2) + (1 - Y) * np.log(1 - A2)) / mreturn loss# 反向传播
def backward_propagation(X, Y, cache, parameters):m = X.shape[1]A1, A2 = cache['A1'], cache['A2']W2 = parameters['W2']dZ2 = A2 - YdW2 = np.dot(dZ2, A1.T) / mdb2 = np.sum(dZ2, axis=1, keepdims=True) / mdZ1 = np.dot(W2.T, dZ2) * sigmoid_derivative(A1)dW1 = np.dot(dZ1, X.T) / mdb1 = np.sum(dZ1, axis=1, keepdims=True) / mgrads = {'dW1': dW1, 'db1': db1, 'dW2': dW2, 'db2': db2}return grads# 更新参数
def update_parameters(parameters, grads, learning_rate):parameters['W1'] -= learning_rate * grads['dW1']parameters['b1'] -= learning_rate * grads['db1']parameters['W2'] -= learning_rate * grads['dW2']parameters['b2'] -= learning_rate * grads['db2']return parameters# 主函数
def deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations):np.random.seed(42)input_size = X.shape[0]output_size = Y.shape[0]parameters = initialize_parameters(input_size, hidden_size, output_size)for i in range(num_iterations):A2, cache = forward_propagation(X, parameters)loss = compute_loss(A2, Y)grads = backward_propagation(X, Y, cache, parameters)parameters = update_parameters(parameters, grads, learning_rate)if i % 100 == 0:print(f'Iteration {i}, Loss: {loss:.4f}')return parameters# 示例数据
X = np.array([[0, 0, 1, 1], [0, 1, 0, 1]])
Y = np.array([[0, 1, 1, 0]])# 定义超参数
hidden_size = 4
learning_rate = 0.1
num_iterations = 10000# 训练深层神经网络
parameters = deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations)# 预测
predictions, _ = forward_propagation(X, parameters)
print('Predictions:', predictions)相关文章:
神经网络基础-神经网络补充概念-26-前向和反向传播
简单比较 前向传播(Forward Propagation): 前向传播是神经网络中的正向计算过程,用于从输入数据开始,逐层计算每个神经元的输出值,直到得到最终的预测值。在前向传播过程中,我们按以下步骤进行…...
Gin路由组
Gin路由组 文章目录 Gin路由组接收任意请求的路由接收没有被定义的路由路由组完整代码 接收任意请求的路由 区别于以往的GET()函数只能处理一种请求,Any()函数可以处理各种函数 语法: func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc){} 案例: …...
安防监控视频云存储平台EasyNVR通道频繁离线的原因排查与解决
安防视频监控汇聚EasyNVR视频集中存储平台,是基于RTSP/Onvif协议的安防视频平台,可支持将接入的视频流进行全平台、全终端分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。为了满足用户的集成与二次开发需求…...
Redis-分布式锁!
分布式锁,顾名思义,分布式锁就是分布式场景下的锁,比如多台不同机器上的进程,去竞争同一项资源,就是分布式锁。 分布式锁特性 互斥性:锁的目的是获取资源的使用权,所以只让一个竞争者持有锁,这…...
Unity如何把游戏导出成手机安装包
文章目录 前言使用环境步骤添加场景构建APK 前言 本文章主要演示了,如何将制作好的游戏,导出成APK,安装到手机上。 使用环境 Unity2022。 步骤 首先打开你的项目,然后选择菜单栏的“File” > “Build Settings…”…...
使用爱校对软件保证公文材料质量的关键步骤
在日常的公文处理中,保证材料质量是每个企业和机构都追求的目标。而要实现这个目标,使用正确的工具是关键。爱校对软件正是这样一款专业的校对工具,它可以帮助我们保证公文材料的质量。接下来,让我们一起来看看使用爱校对软件保证…...
Spring Data Elasticsearch 的简单使用
目录 一、简介 二、配置 三、映射 四、 常用方法 五、操作(重点) 1、对索引表的操作 2、对文档的操作(重点) (1)、添加文档 (2)、删除文档 (3)、查询…...
2024」预备研究生mem-角平分线定理中线定理垂线定理、射影定理
一、角平分线定理 二、中线定理 三、垂线定理、射影定理 垂线定理 射影定理: 四、课后题...
nginx部署时http接口正常,ws接口404
可以这么配置 map $http_upgrade $connection_upgrade {default upgrade; close; }upstream wsbackend{server ip1:port1;server ip2:port2;keepalive 1000; }server {listen 20038;location /{ proxy_http_version 1.1;proxy_pass http://wsbackend;proxy_redirect off;proxy…...
数学建模的概念和学习方法(什么是数学建模)
一、初步认识数学建模 数学建模是将数学方法和技巧应用于实际问题的过程。它涉及使用数学模型来描述和分析现实世界中的现象、系统或过程,并通过数学分析和计算来预测、优化或解决问题。数学建模可以应用于各种领域,包括自然科学、工程、经济学、环境科学…...
ChatGPT在智能安全监测和入侵检测中的应用如何?
ChatGPT在智能安全监测和入侵检测领域具有潜在的应用价值。虽然ChatGPT主要是一个基于自然语言处理的模型,但结合其他技术和领域专业知识,它可以用于生成和分析文本数据,提供实时安全警报、威胁情报等,从而在安全监测和入侵检测方…...
智能数据建模软件DTEmpower 2023R2新版本功能介绍
DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件,致力于帮助工程师及工科专业学生,利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析,建立高质量的数据模型,实现快速设计评估、实时仿真预测、系统参数预警、设…...
BDA初级分析——认识SQL,认识基础语法
一、认识SQL SQL作为实用技能,热度高、应用广泛 在对数据分析人员的调查中SQL长期作为热度排名第-一的编程语言超过Python和R SQL:易学易用,高效强大的语言 SQL:Structured Query Language 结构化查询语言 SQL:易学…...
Qt应用开发(基础篇)——MDI窗口 QMdiArea QMdiSubWindow
一、前言 QMdiArea类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示MDI窗口的部件。 滚屏区域基类 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486 框架类 QFramehttps://blog.csdn.net/u01…...
图片转换成pdf格式?这几种转换格式方法了解一下
图片转换成pdf格式?将图片转换成PDF格式的好处有很多。首先,PDF格式具有通用性,可以在几乎任何设备上查看。其次,PDF格式可以更好地保护文件,防止被篡改或者复制。此外,PDF格式还可以更好地压缩文件大小&am…...
thingsboard编译安装踩坑记录
thingsboard编译安装踩坑记录 一、编译:二、运行 朋友的thingsboard没人维护,要装新的服务器,啥文档也没有,就让参考官网的文档,版本也比较老3.2.2的,拿过来试了试记录下踩坑的地方。 一、编译:…...
汇编语言例子集合
本人早酷爱汇编语言,曾经以自己能直接执行和操作机器码而自豪不已。下面列出一些电脑隐藏角落里的汇编语言例子程序。后续发现整理后会进一步添加完善。 汇编语言在windows上的bmp文件浏览器。 使用win32汇编编写。 下载地址:https://download.csdn.net/…...
强化学习:用Python训练一个简单的机器人
一、介绍 强化学习(RL)是一个令人兴奋的研究领域,它使机器能够通过与环境的交互来学习。在这篇博客中,我们将深入到RL的世界,并探索如何使用Python训练一个简单的机器人。在本文结束时,您将对 RL 概念有基本…...
【Docker】Docker使用之容器技术发展史
🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正࿰…...
postgresql的在windows下的安装
postgresql的在windows下的安装 下载安装步骤超级用户设置密码本地化设置安装信息安装完成 查看postgresql服务pgAdmin的使用打开命令 行工具查询数据库版本 创建数据库 下载 官网地址 https://www.postgresql.org/ 下载页面 https://www.postgresql.org/download/ windows下…...
OpenClaw任务监控方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧
OpenClaw任务监控方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧 1. 为什么需要长链条任务监控 去年冬天,当我第一次用OpenClaw执行一个包含12个步骤的自动化流程时,系统在凌晨3点卡在了第7步——模型因为To…...
libmill内存管理机制:如何避免协程栈溢出问题的完整指南
libmill内存管理机制:如何避免协程栈溢出问题的完整指南 【免费下载链接】libmill Go-style concurrency in C 项目地址: https://gitcode.com/gh_mirrors/li/libmill libmill是一个为C语言引入Go风格并发编程的轻量级库,它通过协程(c…...
Cadence启动文件背后的设计哲学:为什么.cdsinit总覆盖不了.cdsenv的设置?
Cadence启动文件背后的设计哲学:为什么.cdsinit总覆盖不了.cdsenv的设置? 当你在Cadence Virtuoso中反复调整波形显示参数,却发现每次重启后设置都被重置时,背后隐藏的是一套精妙的EDA工具配置体系。这个看似简单的"设置失效…...
AI净界RMBG-1.4快速上手指南:小白也能轻松搞定透明素材
AI净界RMBG-1.4快速上手指南:小白也能轻松搞定透明素材 1. 为什么你需要这个工具 如果你曾经尝试过用传统软件抠图,一定遇到过这些烦恼:发丝边缘总是有残留背景色、半透明物体抠出来像蒙了一层雾、宠物毛发看起来像被啃过一样参差不齐。AI净…...
Realistic Vision V5.1虚拟摄影棚教程:负向提示词组合策略与失效排查
Realistic Vision V5.1虚拟摄影棚教程:负向提示词组合策略与失效排查 你是不是也遇到过这样的情况:用Realistic Vision V5.1生成的人像,明明提示词写得很好,但出来的照片总有些不对劲——手指扭曲得像外星人,脸部细节…...
提升开发体验:LxgwWenKai开源字体效率优化指南
提升开发体验:LxgwWenKai开源字体效率优化指南 【免费下载链接】LxgwWenKai LxgwWenKai: 这是一个开源的中文字体项目,提供了多种版本的字体文件,适用于不同的使用场景,包括屏幕阅读、轻便版、GB规范字形和TC旧字形版。 项目地址…...
超实用AI专著生成攻略,掌握工具技巧,轻松搞定大型学术著作
学术专著创作困境与AI写作工具解决方案 撰写学术专著时的困难,不仅仅体现在“能够写出来”,更关键的是“能够成功出版并获得认可”。在当今的出版行业,学术专著的受众群体相对较小,出版社在选择题材时,对其学术价值以…...
Windows下用CMake和MinGW编译NLopt 2.6.2的完整指南(附测试代码)
Windows平台下NLopt 2.6.2源码编译与实战应用全解析 在科学计算与工程优化领域,NLopt作为一款开源的非线性优化库,因其丰富的算法支持和跨平台特性而广受欢迎。本文将深入探讨如何在Windows系统中从零开始构建NLopt 2.6.2开发环境,并通过完整…...
Qwen3-TTS声音克隆入门指南:上传音频→选择语种→生成自然语音三步走
Qwen3-TTS声音克隆入门指南:上传音频→选择语种→生成自然语音三步走 想不想让AI用你自己的声音说话?或者,想不想用一段短短的录音,就克隆出能说十几种语言的“数字分身”?今天,我们就来手把手教你&#x…...
PMSM无感FOC实战:手把手调参你的滑模观测器SMO(从Simulink到MCU)
PMSM无感FOC实战:滑模观测器SMO从理论到调参全解析 引言:为什么SMO是无感FOC的核心观测器? 在永磁同步电机(PMSM)的无传感器矢量控制(FOC)系统中,滑模观测器(Sliding Mod…...
