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

神经网络基础-神经网络补充概念-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): 首先&#xff0c…...

鸿蒙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 &#xff0c…...

黑客入侵:福特汽车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|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...