神经网络基础-神经网络补充概念-23-神经网络的梯度下降法
概念
神经网络的梯度下降法是训练神经网络的核心优化算法之一。它通过调整神经网络的权重和偏差,以最小化损失函数,从而使神经网络能够逐渐逼近目标函数的最优值。
步骤
1损失函数(Loss Function):
首先,我们定义一个损失函数,用来衡量神经网络预测值与真实标签之间的差距。常见的损失函数包括均方误差(Mean Squared Error)和交叉熵(Cross-Entropy)等。
2初始化参数:
在训练之前,需要随机初始化神经网络的权重和偏差。
4前向传播:
通过前向传播计算神经网络的输出,根据输入数据、权重和偏差计算每一层的激活值和预测值。
5计算损失:
使用损失函数计算预测值与真实标签之间的差距。
6反向传播:
反向传播是梯度下降法的关键步骤。它从输出层开始,计算每一层的误差梯度,然后根据链式法则将梯度传递回每一层。这样,可以得到关于权重和偏差的梯度信息,指导参数的更新。
7更新参数:
使用梯度信息,按照一定的学习率(learning rate)更新神经网络的权重和偏差。通常采用如下更新规则:新权重 = 旧权重 - 学习率 × 梯度。
8重复迭代:
重复执行前向传播、计算损失、反向传播和参数更新步骤,直到损失函数收敛或达到预定的迭代次数。
9评估模型:
在训练过程中,可以周期性地评估模型在验证集上的性能,以防止过拟合并选择合适的模型。
python实现
import numpy as np# 定义 sigmoid 激活函数及其导数
def sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):return x * (1 - x)# 设置随机种子以保证可重复性
np.random.seed(42)# 生成模拟数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])# 初始化权重和偏差
input_size = 2
output_size = 1
hidden_size = 4weights_input_hidden = np.random.uniform(-1, 1, (input_size, hidden_size))
bias_hidden = np.zeros((1, hidden_size))weights_hidden_output = np.random.uniform(-1, 1, (hidden_size, output_size))
bias_output = np.zeros((1, output_size))# 设置学习率和迭代次数
learning_rate = 0.1
epochs = 10000# 训练神经网络
for epoch in range(epochs):# 前向传播hidden_input = np.dot(X, weights_input_hidden) + bias_hiddenhidden_output = sigmoid(hidden_input)final_input = np.dot(hidden_output, weights_hidden_output) + bias_outputfinal_output = sigmoid(final_input)# 计算损失loss = np.mean(0.5 * (y - final_output) ** 2)# 反向传播d_output = (y - final_output) * sigmoid_derivative(final_output)d_hidden = d_output.dot(weights_hidden_output.T) * sigmoid_derivative(hidden_output)# 更新权重和偏差weights_hidden_output += hidden_output.T.dot(d_output) * learning_ratebias_output += np.sum(d_output, axis=0, keepdims=True) * learning_rateweights_input_hidden += X.T.dot(d_hidden) * learning_ratebias_hidden += np.sum(d_hidden, axis=0, keepdims=True) * learning_rateif epoch % 1000 == 0:print(f'Epoch {epoch}, Loss: {loss}')# 打印训练后的权重和偏差
print('Final weights_input_hidden:', weights_input_hidden)
print('Final bias_hidden:', bias_hidden)
print('Final weights_hidden_output:', weights_hidden_output)
print('Final bias_output:', bias_output)相关文章:
神经网络基础-神经网络补充概念-23-神经网络的梯度下降法
概念 神经网络的梯度下降法是训练神经网络的核心优化算法之一。它通过调整神经网络的权重和偏差,以最小化损失函数,从而使神经网络能够逐渐逼近目标函数的最优值。 步骤 1损失函数(Loss Function): 首先,…...
鸿蒙3.1 设备管理DeviceManager
介绍 DeviceManager组件在OpenHarmony上提供账号无关的分布式设备的认证组网能力,并为开发者提供了一套用于分布式设备间监听、发现和认证的接口。 其组成及依赖如下所示: 总结 设备管理模块其实就是软总线的包皮服务。目前权限都是控制系统uid,但是根据官方介绍,后续可…...
Git 目录详解
一、Git目录详解 在使用Git时,有几个目录和文件在Git项目中扮演着重要的角色,下面详细介绍一下这些目录和文件的作用 1、.git目录 .git目录是Git项目的核心,包含了Git的版本库和元数据等重要信息。在该目录中,有一些重要的子目录和…...
基于springboot+vue的武汉旅游网(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
步入React正殿 - React组件设计模式
目录 扩展学习资料 高阶组件 /src/components/hoc/withTooltip.js /src/components/hoc/itemA.jsx /src/components/hoc/itemB.jsx /src/App.js 函数作为子组件【Render pprops】 函数作为子组件 /src/components/rp/itemC.jsx【父组件】 /src/components/rp/withToo…...
Java 单例模式简单介绍
何为单例模式 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 实现思路 如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必…...
根据源码,模拟实现 RabbitMQ - 从需求分析到实现核心类(1)
目录 一、需求分析 1.1、对 Message Queue 的认识 1.2、消息队列核心概念 1.3、Broker Server 内部关键概念 1.4、Broker Server 核心 API (重点实现) 1.5、交换机类型 Direct 直接交换机 Fanout 扇出交换机 Topic 主题交换机 1.6、持久化 1.7…...
企业服务器数据库遭到malox勒索病毒攻击后如何解决,勒索病毒解密
网络技术的发展不仅为企业带来了更高的效率,还为企业带来信息安全威胁,其中较为常见的就是勒索病毒攻击。近期,我们公司收到很多企业的求助,企业的服务器数据库遭到了malox勒索病毒攻击,导致系统内部的许多重要数据被加…...
udp与can通信的选择与比较
UDP(用户数据报协议)和CAN(控制器局域网)是两种不同的通信协议,它们在实时传递性上有一些区别。 UDP是一种无连接的传输协议,它提供了简单的、不可靠的数据传输。UDP不提供可靠性保证、流控制或重传机制。…...
HoudiniVex笔记_P24_ForceBasics力基础
原视频:https://www.youtube.com/playlist?listPLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili Houdini版本:19.5 1、什么是Force 本章主要讲重力、弹力、速度与质量、…...
半导体退火那些事(1)
1.半导体退火的原理 半导体材料在晶体生长和制造过程中,由于各种原因会出现缺陷、杂质、位错等结构性缺陷,导致晶格不完整,施加电场后的电导率较低。通过退火处理,可以使材料得到修复,结晶体内部重新排列,…...
MapReduce介绍
目录 一、什么是MapReduce 二、MapReduce 的设计思想 2.1 分而治之 2.2 构建抽象模型:Map和Reduce 2.3 隐藏系统层细节 三、MapReduce 的框架原理 3.1 MRv1工作原理 3.1.1 MRv1架构工作原理图 3.1.1.1 流程说明 3.1.1.1.1 作业的提交 3.1.1.1.2 作业的初始化 3…...
Redis支持的主要数据结构操作命令有哪些?
Redis支持多种数据结构操作命令,包括以下主要命令: 字符串(Strings): SET:设置字符串键的值。GET:获取指定键的值。INCR/DECR:对存储整数的字符串执行加一或减一操作。APPEND&#x…...
环境与能源创新专题:地级市绿色创新、碳排放与环境规制数据
数据简介:推动绿色发展,促进人与自然和谐共生是重大战略举措。绿色发展强调“绿水青山就是金山银山”,人与自然和谐共生重在正确处理生态环境保护与经济发展的关系。在着力于实现绿色发展的过程中,绿色创新是绿色发展的重要驱动因…...
设计模式之门面模式(Facade)的C++实现
1、门面模式提出 在组件的开发过程中,某些接口之间的依赖是比较紧密的,如果某个接口发生变化,其他的接口也会跟着发生变化,这样的代码违背了代码的设计原则。门面设计模式是在外部客户程序和系统程序之间添加了一层中间接口&…...
【数理知识】向量与基的内积,Matlab 代码验证
序号内容1【数理知识】向量的坐标基表示法,Matlab 代码验证2【数理知识】向量与基的内积,Matlab 代码验证 文章目录 1. 向量与基的内积2. 二维平面向量举例3. 代码验证Ref 1. 向量与基的内积 假设存在一个二维平面内的向量 a ⃗ \vec{a} a ,…...
黑客入侵:福特汽车Sync3车机存在漏洞,黑客入侵可抹除系统数据
据福特汽车公告,他们发现部分2021年至2022年车型的Sync3车机存在Wi-Fi漏洞,该漏洞可能被黑客利用来入侵并抹除车机内的系统数据。这一漏洞源于福特车系中采用的WL18xx MCP驱动程序的内存缓冲区溢位漏洞,其漏洞编号为CVE-2023-29468。 这一发现…...
面试热题(单词搜索)
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相…...
自定义表格组件:实现表格中有固定列的功能逻辑
目录 1,效果图2,实现思路3,实现方式 1,效果图 可以拖动纵向滑块,最左边一列固定住。 以同样的道理,可以在右面固定一列 2,实现思路 作为一个table组件,要接受父组件中的对table的…...
uni-app弹窗列表滚动, 弹框下面的内容也跟随滚动解决方案
滑动弹窗里的列表,弹框下面的内容也会跟着滑动,导致弹窗中的列表不能正常滚动 1.弹窗组件代码,需要在最外层的view中加入touchmove.stop.prevent"moveHandle",且弹窗中需要滚动的列表要使用scroll-view标签包裹起来&…...
离散数学实战:用Python解决图论问题(附完整代码示例)
离散数学实战:用Python解决图论问题(附完整代码示例) 当你在社交软件上查看"可能认识的人"推荐,或是用导航软件规划最短路线时,背后都在运行图论算法。作为离散数学中最具工程价值的领域,图论将现…...
vLLM-v0.17.1应用场景:智能硬件语音助手离线LLM推理部署
vLLM-v0.17.1应用场景:智能硬件语音助手离线LLM推理部署 1. 技术背景与需求分析 智能硬件语音助手正在经历从云端依赖向本地化处理的转变。传统方案面临三大痛点: 网络延迟问题:云端API调用导致响应速度受限隐私安全顾虑:用户对…...
保姆级教程:在Windows 11上用VSCode和Conda搞定Depth-Anything-3(含常见报错修复)
Windows 11深度估计实战:VSCodeConda环境下的Depth-Anything-3全流程指南 深度估计作为计算机视觉领域的重要技术,正在自动驾驶、增强现实等场景中发挥关键作用。本文将带你在Windows 11系统上,使用VSCode和Conda搭建Depth-Anything-3开发环境…...
OpenClaw语音交互:nanobot对接Whisper实现声控任务触发
OpenClaw语音交互:nanobot对接Whisper实现声控任务触发 1. 为什么需要语音交互能力 作为一个长期使用OpenClaw进行个人工作流自动化的用户,我一直在思考如何让这个工具更加"无感"地融入日常。键盘输入固然高效,但在某些场景下——…...
如何控制Rainmeter皮肤背景视频的有限循环播放次数
如何控制Rainmeter皮肤背景视频的有限循环播放次数 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具,允许用户通过皮肤实现丰富的…...
SpringBoot+Vue社区老年人帮扶系统源码+论文
代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择: 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...
开源工具赋能PS4玩家:GoldHEN Cheats Manager的全方位游戏体验优化方案
开源工具赋能PS4玩家:GoldHEN Cheats Manager的全方位游戏体验优化方案 【免费下载链接】GoldHEN_Cheat_Manager GoldHEN Cheats Manager 项目地址: https://gitcode.com/gh_mirrors/go/GoldHEN_Cheat_Manager GoldHEN Cheats Manager是一款专为PlayStation …...
轻量级工具G-Helper:一站式解决ROG游戏本色彩配置异常问题
轻量级工具G-Helper:一站式解决ROG游戏本色彩配置异常问题 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目…...
Flutter 实现点击任意位置收起键盘的最佳实践
痛点 在 Flutter 开发中,TextField 聚焦后会弹出键盘,关闭键盘通常需要: 点击系统返回键点击输入框外的空白区域(但很多情况下点击空白区域也没反应)点击其他输入框(键盘会切换到另一个输入框,不…...
Simulink频域分析避坑指南:如何准确获取谐振频率(含MATLAB代码)
Simulink频域分析实战:谐振频率精准提取方法论与MATLAB实现 在控制系统设计与分析领域,频域特性是评估系统动态性能的核心指标之一。而谐振频率作为频域响应中的关键特征点,直接影响着系统的稳定性和响应速度。然而,许多工程师在使…...
