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

【通俗易懂说模型】反向传播(附多元回归与Softmax函数)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言

2. 多元分类

2.1 softmax函数

2.2 Softmax函数对比Sigmoid函数

3. 反向传播

3.1 反向传播与神经网络

3.2 总体观

3.3 逐级观(数学推理,仅仅想会使用不需要理解)

3.4 反向传播思想总结

4. 梯度反向传播的完整例子

Step1:前向传播

Step2:反向传播

Step3:梯度下降

5. 总结


1. 前言

        进入这篇文章之前,想必大家已经阅读过前面的系列文章:【通俗易懂说模型】线性回归(附深度学习、机器学习发展史)-CSDN博客

【通俗易懂说模型】非线性回归和逻辑回归(附神经网络图详细解释)-CSDN博客

        通过前面的文章, 猫猫希望友友们对机器学习、深度学习等基础概念,以及发展历史有一个宏观的理解。同时对回归(线性、非线性、逻辑回归)有一个深入的认识。然后接下来,就让我们收拾收拾行囊,准备出发!下一站——多元分类、反向传播🥰🥰~

        网络上有很多关于反向传播的文章,但是猫猫看了都不是很满意。之前一遍又一遍看结果就是仍然不能理解。直到最近重新拿起反向传播思考才有更深入的认识,于是打算写这样一篇文章,希望能为大家入门深度学习理解反向传播提供一个全新的思路~~

2. 多元分类

        逻辑回归是二元分类,属于多元分类的一种特殊情况。在生活中,多元分类问题十分常见。无论是看完一部电影,给电影评星,还是将一本书归到某一类的书架上,都属于多元分类的问题。这一节,我们就详细介绍如何用神经网络进行多元分类。

2.1 softmax函数

        多元分类问题与二元分类问题类似,区别在于用softmax函数替代sigmoid函数。多元分类的神经网络要求输出层的神经元数目与所需分类的类别数保持一致。图3-26展示了多元分类的模型结构。假设分类的类别数为k,那么softmax函数需要输人k个值(n1,n2,...,nk),然后输出k个概率(π1,π2,...,πk)。softmax函数实际上是sigmoid函数的推广。softmax函数将所有分类的分数值(n1,n2,...,nk)转化为概率(π1,π2,...,πk),且各概率的和为1。

softmax函数的数学公式如下:

\pi_l=\frac{\mathrm{e}^{n_l}}{\sum_{j=1}^k\mathrm{e}^{\eta_l}}

softmax函数可以巧妙地将多个分类的分数转化为(0,1)的值并且和为1

\sum_{i=1}^{k}\pi_{i}=1

2.2 Softmax函数对比Sigmoid函数

Sigmoid函数:

        线性神经元的输出为\overrightarrow{x}*\overrightarrow{w},随后经过一个非线性的sigmoid函数(公式中常把它简写作sign),此函数的图像如下图所示。sigmoid函数的定义域为(-\infty,+\infty),值域为(0,1),表达式为:

\operatorname{sigm}(x)=\frac{1}{1+\mathrm{e}^{-x}}

Softmax函数:

        Softmax函数是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为K的任意实向量,Softmax函数可以将其压缩为长度为K,值在[0,1]范围内,并且向量中元素的总和为1的实向量。

\pi_l=\frac{\mathrm{e}^{n_l}}{\sum_{j=1}^k\mathrm{e}^{\eta_l}}

区别

  • Softmax所有分类概率总和为1。
  • Sigmoid值是为1这个类的概率a。无论输出结果多大,通过Sigmoid都限制在[0,1]之间。
  • Sigmoid另一个类0的概率就是1-a。

3. 反向传播

        反向传播算法(BackpropagationAlgorithm),又被业界称为BP算法,是深度神经网络取得成功的奠基石。深度神经网络实际上是多隐含层神经网络,在早期就已经被提出,但是当时没有找到很好的训练方法,使得深度神经网络的强大实力得不到发挥。直到反向传播算法的出现,深度神经网络才得以崭露头角。如今,反向传播是深度神经网络最重要的训练方法。

3.1 反向传播与神经网络

  1. 神经网络算法很早就被提出来了,但是对于如何找到合适的参数去拟合数据一直是个问题,人工找显然不现实。
  2. 后面梯度下降算法被提出来,我们也就知道了给出一个模型评价标志——loss。也就可以根据loss将目标改为降低loss从而训练模型参数。这时的问题就在于梯度下降算法需要知道函数的梯度。手工通过法则去计算每一个参数在loss中的梯度是不合适的。
  3. 反向传播的出现让求解参数的梯度变得非常简单。利用链式法则从函数的输出结果loss,逐级向前传播就可以一级一级求出每一个参数的梯度值
  4. 于是神经网络的训练模型才被完全建立起来,神经网络模型才有工作的可能性 

3.2 总体观

        现在,我们先讨论一个最简单的例子:隐含层的层数为1的神经网络的前向传播及反向传播的过程。如下图所示,我们的前向传播过程为:输入\overrightarrow{z}^1,经过隐含层得到\overrightarrow{z}^2,再经过输出层得到\overrightarrow{z}^3,经过损失函数得到损失值{z}^4

        接着进行反向传播,为了方便计算和推导,我们定义\overrightarrow{\delta }变量,暂时不去考虑\overrightarrow{\delta }代表什么。我们可以用一种抽象的方式去审视反向传播的过程,如下图所示。这个过程首先将\delta ^4=\frac{dL}{dL}=1作为输入,然后由\delta ^4反向传播至第3层各节点得到\overrightarrow{\delta ^3}\overrightarrow{\delta ^3}反向传播经过第2层各节点得到\overrightarrow{\delta ^2},利用\overrightarrow{z^3}\overrightarrow{\delta ^3}及第2层到第3层之间的权重矩阵W^{(2,3)}求得梯度值\frac{\partial L}{\partial W^{(2,3)} }。接着,\overrightarrow{\delta ^2}继续反向传播得到\overrightarrow{\delta ^1},我们利用\overrightarrow{z^2}\overrightarrow{\delta ^2}及第1层到第2层之间的权重矩阵W^{(1,2)}可以求得梯度值\frac{\partial L}{\partial W^{(1,2)} }

反向传播的理解:

  • 前向传播中一个数据点会生成三个下一层中的中间值。那么在反向传播中,每一个下一层中的中间值都会反向来调整数据点的参数。
  • 反向传播本质上是求解参数相对于最终输出Loss的影响大小(梯度)的
  • 上面有一个词用的非常模糊——反向传播。你可能会很疑惑,这个反向传播是怎么工作的,为什么就求出梯度大小了。下面的逐级观将给你答案
  • 总体观只要关注到\overrightarrow{\delta }即可,不用考虑\overrightarrow{\delta }具体值是什么,这个值又是如何求解的

3.3 逐级观(数学推理,仅仅想会使用不需要理解)

        上面猫猫展示了反向传播的总体过程,如果你还没有完全理解也没关系,下面我们要探讨每
层的细节。如下图所示,我们将神经网络的第1层作为代表进行观察,第1层的输人是,设第I层到第I+1层之间的权重矩阵为W^{(l,l+1)},于是可以将数据经过该层的变换看作函数f^l的运算。

前向传播的数学表达式如下:

\vec{z}^{l+1}=f^{l}(\vec{z}^{l},W^{(l,l+1)})

为了方便描述反向传播的过程,我们定义{\delta ^l_j},数学表达如下:

\delta_{j}^{l}=\frac{\partial L}{\partial z_{j}^{l}}

根据微积分的链式法则,可以得到:

\delta_{j}^{l}=\frac{\partial L}{\partial z_{j}^{l}}=\sum_{k}\frac{\partial L}{\partial z_{k}^{l+1}}\cdot\frac{\partial z_{k}^{l+1}}{\partial z_{j}^{l}}=\sum_{k}\delta_{k}^{l+1}\frac{\partial z_{k}^{l+1}}{\partial z_{j}^{l}}

        上面公式表明想要求解出l层神经元相对于最终输出L的影响度,则需要求解出\frac{\partial z_k^{l+1}}{\partial z_j^l}的值,同时利用后一层也就是l+1层神经元相对于最终输出L的影响度。而\frac{\partial z_k^{l+1}}{\partial z_j^l}的值就是第l层和第l+1层之间的权重值W,因此核心就在于求出每一层之间的权重。到这里我们就求出了每一个神经元对于输出Loss的梯度。接下去就要思考,这个梯度如何用来更新权重

        知道神经元对于Loss的梯度值后,我们就要根据梯度方向的相反方向去修正神经元的值。修正神经元的值本质就是修正神经元W权重的值。因此为了更新权重,需要计算出损失函数关于神经网络内每个权重的梯度,损失函数关于第l层到第I+1层之间权重矩阵W^{(l,l+1)}的梯度为:

\frac{\partial L}{\partial W^{(l,l+1)}}=\sum_{j}\frac{\partial L}{\partial z_{j}^{l+1}}\frac{\partial z_{j}^{l+1}}{\partial W^{(l,l+1)}}=\sum_{j}\delta_{j}^{l+1}\frac{\partial z_{j}^{l+1}}{\partial W^{(l,l+1)}}

        再来看下图,假设我们要修正W^{(2,3)},此时就需要知道W^{(2,3)}对于L的梯度。这个梯度的求解就要利用到z^3W^{(2,3)}\delta ^3,而这些我们都是已知的,因此这个梯度\frac{\partial L}{\partial W^{(2,3)}}就是已知的,那么就可以根据梯度下降法去梯度更新W^{(2,3)}的值了。​

3.4 反向传播思想总结

        网络上有许多关于反向传播的总结,基本都是带大家走一遍反向传播的流程。这样做自然有它的用处,但是猫猫发现很多时候我们都是走的时候能够看懂,但是让自己写一遍就不能理解了。究其原因就是仅仅知其然,并没有知其所以然。于是我想了这样一个角度去理解反向传播——总体观 和 局部观(逐级观)

        总体观想要告诉我们:

  1. 反向传播从输出值Loss向前面逐级传播
  2. 反向传播研究的是神经元相对于输出Loss的梯度(影响程度),也就是\delta
  3. 总体观要给我们灌输一个思想:神经元对于Loss的梯度本质上就是权重W对于Loss的梯度
  4. 前向传播一个第l层的神经元会参与计算第l+1层所有的神经元。因此反向传播时,所有第l+1层的神经元会反向作用于这个第l层的神经元,影响它的参数变化

        局部观想要告诉我们:

  1. 为什么神经元对于Loss的梯度本质上就是权重W对于Loss的梯度?
  2. 权重W对于Loss的梯度是多少?
  3. 所有第l+1层的神经元会反向作用于这个第l层的神经元,影响它的参数变化
  4. 链式法则的运用使得梯度可以逐层传播

4. 梯度反向传播的完整例子

        现在我们用一个例子来讲解BP,如下图所示,我们选取的例子是最简单的feed forward neural network,它有两层,输入层有两个神经元 x1,x2,隐藏层有两个神经元 h1,h2,最终输出只
有一个神经元y,各个神经元之间全连接。为了直观起见,我们给各个参数赋上具体的数值。我
们令下x1=1,x2=0.5,然后我们令W1,W2,W3,W4的真实值分别是1,2,3,4,令W5,W6的真实值是0.5,0.6。这样我们可以算出 y的真实目标值是t= 4。

        那么为了模拟一个Back Propagation的过程,我们假设我们只知道 x1=1,x2=0.5 ,以及对应的目标 t=4 。我们不知道 w1,w2,w3,w4,w5,w6 的真实值,现在我们需要随机为他们初始化值,假设我们的随机化结果是 w1=0.5,w2=1.5,w3=2.3,w4=3,w5=1,w6=1 。下面我们就开始来一步步进行Back Propagation吧。

Step1:前向传播

        首先,在计算反向传播之前我们需要计算Feed Forward Pass,也即是预测的 h1,h2,y 和误差项 E ,其中E=\frac{1}{2}(t-y)^2 。根据网络结构示意图,各个变量的计算公式为:

Step2:反向传播

        现在Feed Forward Pass算完了,我们来计算Backward Pass。 y 是神经网络预测的值,真实的输出是 t=4 。那么,要更新 w5 的值我们就要算\frac{ \partial E}{\partial w_5} ,根据链式法则有:

\frac{\partial E}{\partial w_5}=\frac{\partial E}{\partial y}\cdot\frac{\partial y}{\partial w_5}

因为 E=\frac{1}{2}(t-y)^2,所以:

\begin{aligned}\frac{\partial E}{\partial y}&=2\cdot\frac{1}{2}\cdot(t-y)\cdot(-1)\\&=y-t\\&=5.05-4=1.05\end{aligned}

y=w_5*h1+w_6*h2,所以 :

\frac{\partial y}{\partial w_5}=h_1+0=h_1=1.25

把上面两项相乘我们得到:

\begin{gathered}\frac{\partial E}{\partial w_5}=\frac{\partial E}{\partial y}\cdot\frac{\partial y}{\partial w_5}=(y-t)\cdot h_1\\=1.05\cdot1.25=1.3125\end{gathered}

Step3:梯度下降

        运用之前梯度下降法的公式更新 w5 ,得到新的 w5’ 。其中我们假设 η=0.1 (并且后面所有的 η 都等于 0.1 ):

\begin{aligned}w_5^{'}&=w_5-\eta\cdot\frac{\partial E}{\partial w_5}\\&&\mathrm{25}\\&=0.86875\end{aligned}

同理,我们可以按照相同的步骤计算 w6' 的更新公式:

\begin{aligned}w_6^{'}&=w_6-\eta\cdot\frac{\partial E}{\partial w_6}\\&=1-0.1\cdot3.99\\&=0.601\end{aligned}

        下面我们再来看 w1,w2,w3,w4 ,由于这四个参数在同一层,所以求梯度的方法是相同的,因此我们这里仅展示对 w1 的推导。根据链式法则:

 \frac{\partial E}{\partial w_1}=\frac{\partial E}{\partial y}\cdot\frac{\partial y}{\partial h_1}\cdot\frac{\partial h_1}{\partial w_1}

        其中\frac{\partial E}{\partial y}=y-t 在求\frac{\partial E}{\partial w_5}的时候已经求过了。而根据y=w_5\cdot h_1+w_6\cdot h_2我们可以得到:

\frac{\partial y}{\partial h_1}=w_5+0=w_5

又根据 h1=w1⋅x1+w2⋅x2 我们可以得到:

\frac{\partial h_1}{\partial w_1}=x_1+0=x_1

因此我们有下面的公式:

\frac{\partial E}{\partial w_1}=(y-t)\cdot w_5\cdot x_1

现在我们代入数字并使用梯度下降法更新 w1

\begin{aligned}w_1^{'}&=w_1-\eta\cdot\frac{\partial E}{\partial w_1}\\&=w_1-\eta\cdot(y-t)\cdot w_5\cdot x_1\\&=0.5-0.1\cdot1.05\cdot1\cdot1\\&=0.395\end{aligned}

然后重复这个步骤更新w2、w3、w4

\begin{aligned}&w_2^{'}=w_2-\eta\cdot\frac{\partial E}{\partial w_2}\\&=w_2-\eta\cdot(y-t)\cdot w_5\cdot x_2\\&=1.5-0.1\cdot1.05\cdot1\cdot0.5\\&=1.4475\\&w_3^{'}=w_3-\eta\cdot\frac{\partial E}{\partial w_3}\\&=w_3-\eta\cdot(y-t)\cdot w_6\cdot x_1\\&=2.3-0.1\cdot1.05\cdot1\cdot1\\&=2.195\\&w_4^{'}=w_4-\eta\cdot\frac{\partial E}{\partial w_4}\\&=w_2-\eta\cdot(y-t)\cdot w_5\cdot x_2\\&=3-0.1\cdot1.05\cdot1\cdot0.5\\&=2.9475\end{aligned}

        现在我们已经更新了所有的梯度,完成了一次梯度下降法。我们用得到的新的 w+ 再来预测一次网络输出值,根据Feed Forward Pass得到 y’=3.1768 ,那么新的误差是 E‘=0.3388 ,相比于之前的 E=0.55125 确实是下降了呢,说明我们的模型预测稍微准了一点。只要重复这个步骤,不断更新网络参数我们就能学习到更准确的模型啦。

5. 总结

如果想要学习更多深度学习知识,大家可以点个关注并订阅,持续学习、天天进步

你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~

相关文章:

【通俗易懂说模型】反向传播(附多元回归与Softmax函数)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...

【人工智能】Python中的深度学习优化器:从SGD到Adam

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在深度学习模型的训练过程中,优化器起着至关重要的作用,它决定了模型的收敛速度以及最终的性能。本文将介绍深度学习中常用的优化器,从传…...

仅128个token达到ImageNet生成SOTA性能!MAETok:有效的扩散模型的关键是什么?(卡内基梅隆港大等)

论文链接:https://arxiv.org/pdf/2502.03444 项目链接:https://github.com/Hhhhhhao/continuous_tokenizer 亮点直击 理论与实验分析:通过实验和理论分析建立了潜空间结构与扩散模型性能之间的联系。揭示了具有更少高斯混合模型(G…...

Listener监听器和Filter过滤器

一.监听器 1.是javaweb的三大组件之一,分别是Servlet程序,Listener监听器,Filter过滤器 2.Listener是JvaEE的规范,就是接口,监听器的作用就是监听某种变化(一般是对象创建/销毁,属性变化),触发对应方法完成相应的任务 3.ServletContextListener:/*当一个类实现了ServletContex…...

我的年度写作计划

目录 计算机经典四件 数据结构 计算机网络体系 经典操作系统与计算机架构 嵌入式领域笔记 其他部分 私货部分 笔者打算在这里理一下今年的写作计划,如下所示: 计算机经典四件 数据结构 笔者因为冲刺面试需要,还是要更加扎实的掌握自…...

kafka专栏解读

kafka专栏文章的编写将根据kafka架构进行编写,即先编辑kafka生产者相关的内容,再编写kafka服务端的内容(这部分是核心,内容较多,包含kafka分区管理、日志存储、延时操作、控制器、可靠性等),最后…...

数据库操作与数据管理——Rust 与 SQLite 的集成

第六章:数据库操作与数据管理 第一节:Rust 与 SQLite 的集成 在本节中,我们将深入探讨如何在 Rust 中使用 SQLite 数据库,涵盖从基本的 CRUD 操作到事务处理、数据模型的构建、性能优化以及安全性考虑等方面。SQLite 是一个轻量…...

Linux文件目录基本操作

目录 目录概述相关操作函数相关数据结构体说明 目录概述 什么是目录? 在linux操作系统中其实目录也是一种文件,相对于普通文件,它的存储内容不同,它的存储内容主要是当前目录下的文件以及子目录文件信息。目录就像是一颗大树&a…...

TaskBuilder项目实战:创建项目

用TaskBuilder开发应用系统的第一步就是创建项目,项目可以是一个简单的功能模块,也可以是很多功能模块的集合,具体怎么划分看各位的实际需要,我们一般会将相互关联比较紧密的一组功能模块放到一个独立的项目内,以便打包…...

使用DeepSeek的技巧笔记

来源:新年逼自己一把,学会使用DeepSeek R1_哔哩哔哩_bilibili 前言 对于DeepSeek而言,我们不再需要那么多的提示词技巧,但还是要有两个注意点:你需要理解大语言模型的工作原理与局限,这能帮助你更好的知道AI可完成任务…...

使用Python实现PDF与SVG相互转换

目录 使用工具 使用Python将SVG转换为PDF 使用Python将SVG添加到现有PDF中 使用Python将PDF转换为SVG 使用Python将PDF的特定页面转换为SVG SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式。SVG是…...

idea整合deepseek实现AI辅助编程

1.File->Settings 2.安装插件codegpt 3.注册deepseek开发者账号,DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息,File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…...

java文件上传粗糙版

粗糙版图片上传 1.导入依赖 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.2</version> </dependency> 2.配置minio地址跟对应的桶 业务层实现类 import io.minio.MinioClient; /…...

一种基于Leaflet.Legend的图例动态更新方法

目录 前言 一、场景再现 1、需求描述 2、核心方法介绍 3、存在的问题 二、问题解决 1、重复解决办法 2、图例不展示解决办法 3、成果展示 三、总结 前言 在当今数字化时代&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术已经广泛应用于各个领域&#xff0c;…...

Vue Dom截图插件,截图转Base64 html2canvas

安装插件 npm install html2canvas --save插件使用 <template><div style"padding: 10px;"><div ref"imageTofile" class"box">发生什么事了</div><button click"toImage" style"margin: 10px;&quo…...

安宝特方案 | AR眼镜:远程医疗的“时空折叠者”,如何为生命争夺每一分钟?

行业痛点&#xff1a;当“千里求医”遇上“资源鸿沟” 20世纪50年代&#xff0c;远程会诊的诞生曾让医疗界为之一振——患者不必跨越山河&#xff0c;专家无需舟车劳顿&#xff0c;一根电话线、一张传真纸便能架起问诊的桥梁。然而&#xff0c;传统远程医疗的局限也日益凸显&a…...

【人工智能】Python中的序列到序列(Seq2Seq)模型:实现机器翻译

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 序列到序列(Seq2Seq)模型是自然语言处理(NLP)中一项核心技术,广泛应用于机器翻译、语音识别、文本摘要等任务。本文深入探讨Seq2Seq模…...

【批量获取图片信息】批量获取图片尺寸、海拔、分辨率、GPS经纬度、面积、位深度、等图片属性里的详细信息,提取出来后导出表格,基于WPF的详细解决方案

摄影工作室通常会有大量的图片素材&#xff0c;在进行图片整理和分类时&#xff0c;需要知道每张图片的尺寸、分辨率、GPS 经纬度&#xff08;如果拍摄时记录了&#xff09;等信息&#xff0c;以便更好地管理图片资源&#xff0c;比如根据图片尺寸和分辨率决定哪些图片适合用于…...

关于32位和64位程序的传参方法及虚拟机调试工具总结

一、传参方法对比 1. 32位程序 系统调用 (Linux) 使用int 0x80指令触发系统调用 寄存器传参顺序&#xff1a; eax 系统调用号 ebx 第1个参数 ecx 第2个参数 edx 第3个参数 esi 第4个参数 edi 第5个参数 普通函数调用 (C语言) 栈传递参数&#xff1a;参数从右向左压栈…...

【Windows】PowerShell 缓存区大小调节

PowerShell 缓存区大小调节 方式1 打开powershell 窗口属性调节方式2&#xff0c;修改 PowerShell 配置文件 方式1 打开powershell 窗口属性调节 打开 CMD&#xff08;按 Win R&#xff0c;输入 cmd&#xff09;。右键标题栏 → 选择 属性&#xff08;Properties&#xff09;…...

查看云机器的一些常用配置

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes常…...

约克VRF|冬日舒适新标杆,温暖每一寸空间

冬天来了&#xff0c;谁不想窝在家里&#xff0c;一边温暖舒适&#xff0c;一边畅享清新空气&#xff1f;      约克VRF中央空调——用科技为你打造全方位的冬季理想生活&#xff01;      地暖空调二合一&#xff0c;暖从足起&#xff0c;养生更健康~      普通取…...

【AI学习】关于 DeepSeek-R1的几个流程图

遇见关于DeepSeek-R1的几个流程图&#xff0c;清晰易懂形象直观&#xff0c;记录于此。 流程图一 来自文章《Understanding Reasoning LLMs》&#xff0c; 文章链接&#xff1a;https://magazine.sebastianraschka.com/p/understanding-reasoning-llms?continueFlagaf07b1a0…...

CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址&#xff1a;CNN卷积神经网络多变量多步预测&#xff0c;光伏功率预测&#xff08;Matlab完整源码和数据) 标题&#xff1a;CNN卷积神经网络多变量多步预测&#xff0c;光伏功率预测 一、引言 1.1 研究背景及意义 随着全球能源危机的加剧和环保意识的提升&#xff…...

mapbox进阶,添加绘图扩展插件,绘制圆形

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...

学习TCL脚本基础语法的几个步骤?

文章目录 前言1. 命令和参数1.1 Tcl 命令的基本结构1.2 示例1.2.1 puts 命令1.2.2 set 命令1.2.3 if 命令1.2.4 foreach 命令 1.3 参数的类型1.3.1 字符串1.3.2 变量1.3.3 表达式1.3.4 列表1.3.5 字典 1.4 命令的嵌套 二、变量1. 声明变量2. 使用变量3. 变量类型3.1 字符串3.2 …...

move_base全局路径规划震荡之参数调优

在使用 move_base 进行导航时&#xff0c;如果全局路径规划在遇到障碍物时频繁在障碍物左右两侧跳变&#xff0c;导致机器人绕障失败&#xff0c;通常可以通过调整参数优化来解决。以下是具体原因分析和解决方案&#xff1a; 问题原因分析&#xff1a; 全局路径规划的震荡&…...

Could not create task ‘:mainActivity:minifyReleaseWithR8‘.

最近接收了一个老项目&#xff0c;把项目clone下来后&#xff0c;总是报错&#xff0c;无法运行 Build-tool 33.0.1 is missing DX at D:\Android\Sdk\build-tools\33.0.1\dx.batFAILURE: Build failed with an exception.* What went wrong: Could not determine the depende…...

保姆级教程Docker部署Zookeeper官方镜像

目录 1、安装Docker及可视化工具 2、创建挂载目录 3、运行Zookeeper容器 4、Compose运行Zookeeper容器 5、查看Zookeeper运行状态 6、验证Zookeeper是否正常运行 1、安装Docker及可视化工具 Docker及可视化工具的安装可参考&#xff1a;Ubuntu上安装 Docker及可视化管理…...

人工智能-A* 算法与机器学习算法结合

以下将为你展示如何将 A* 算法与机器学习算法&#xff08;这里以简单的神经网络为例&#xff09;结合实现路径规划。我们会先使用 A* 算法生成一些路径规划数据&#xff0c;然后用这些数据训练一个简单的神经网络&#xff0c;让神经网络学习如何预测路径。最后&#xff0c;将训…...

如何在Python中使用Requests库?

在Python中&#xff0c;网络请求处理是很多应用开发中的常见需求。Requests库作为Python中最常用的第三方库之一&#xff0c;它能够简化HTTP请求的发送和响应的处理。无论是获取网页内容、与API接口交互&#xff0c;还是提交表单数据&#xff0c;Requests都可以帮助开发者轻松实…...

通过命令行运行py文件与通过ide运行py文件,对文件中模块的引用方式的影响

通过命令行运行 Python 文件和通过 IDE 运行 Python 文件时&#xff0c;模块的引用方式 会受到一些影响&#xff0c;主要体现在 工作目录 和 模块导入路径&#xff08;sys.path&#xff09;的设置上。下面详细介绍这两种方式的区别和它们如何影响模块引用。 1. 通过命令行运行…...

如何避免大语言模型中涉及丢番图方程的问题

希尔伯特第十问题是一个著名的数学问题,涉及不定方程(又称为丢番图方程)的可解答性。然而在大模型中,我们希望问题都是确定的可解的,或者说要尽可能的想办法避免不确定的不可解问题。由于丢番图方程问题是不可判定问题(即不存在一个有效的算法能够解决该类问题的所有实例…...

重新刷题求职2-DAY7

1.454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#…...

Day 32 卡玛笔记

这是基于代码随想录的每日打卡 455. 分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff…...

android studio无痛入门

在Android Studio中创建和管理项目主要涉及以下几个步骤&#xff1a; 1. 创建新项目 打开Android Studio&#xff0c;点击“Start a new Android Studio project”或者“File” > “New” > “New Project”。 选择一个模板&#xff0c;例如“Empty Activity”&#xff0…...

flutter安卓打包签名

flutter安卓打包签名 1.创建签名文件 keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-aliaskeytool 是一个用于管理密钥和证书的命令行工具&#xff0c;通常与 Java 开发工具包 (JDK) 一起使用。my-release-…...

Windows编程:下载与安装 Visual Studio 2019

本节前言 在写作本节的时候&#xff0c;本来呢&#xff0c;我正在写的专栏&#xff0c;是 MFC 专栏。而 VS2010 和 VS2019&#xff0c;正是 MFC 学习与开发中&#xff0c;可以使用的两款软件。然而呢&#xff0c;如果你去学习 Windows API 知识的话&#xff0c;那么&#xff0…...

ElementUI的<el-image>组件引用网络图片加载失败

1. 验证图片 URL 是否有效 直接访问图片链接&#xff0c;确保 URL 正确且可公开访问 如果浏览器无法加载图片&#xff0c;可能是图片服务器限制了外链或已失效。 解决方法&#xff1a;更换为可用的图片 URL。 2. 检查浏览器开发者工具 打开浏览器开发者工具&#xff08;F12…...

GitHub Pages + Jekyll 博客搭建指南(静态网站)

目录 &#x1f680; 静态网站及其生成工具指南&#x1f30d; 什么是静态网站&#xff1f;&#x1f4cc; 静态网站的优势⚖️ 静态网站 VS 动态网站 &#x1f680; 常见的静态网站生成器对比&#x1f6e0;️ 使用 GitHub Pages Jekyll 搭建个人博客&#x1f4cc; 1. 创建 GitHu…...

idea项目列表不出现,展示loading

2025年02月08 11:23:36 星期六 发生在webstorm中&#xff0c;跟其他idea类似 原因是将 ignore 插件升级到 4.5.5 版本 https://github.com/JetBrains/idea-gitignore/pull/933 解决方案&#xff1a;将ignore版本将为 4.5.4 我是将 4.5.5 降低为 4.5.4 正常显示文件夹了。...

多智能体协作架构模式:驱动传统公司向AI智能公司转型

前言 在数字化浪潮的席卷下&#xff0c;传统公司的运营模式正面临着前所未有的挑战。随着市场竞争的日益激烈&#xff0c;客户需求的快速变化以及业务复杂度的不断攀升&#xff0c;传统公司在缺乏 AI 技术支撑的情况下&#xff0c;暴露出诸多痛点。在决策层面&#xff0c;由于…...

新增md、html压缩文档上传,开放接口访问密钥改为多个,zyplayer-doc 2.4.7 发布啦!

zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具&#xff0c;支持在线编辑富文本、Markdown、表格、Office文档、API接口、思维导图、Drawio以及任意的文本文件&#xff0c;专为私有化部署而设计&#xff0c;最大程度上保证企业或个人的数据安全&#xff0c;支持以内…...

w~Transformer~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/12406495 #transformer~x1 太可怕了都到6了 太强~~ DeepMind 表示&#xff0c;他们提出的算法蒸馏&#xff08;AD&#xff09;是首个通过对具有模仿损失的离线数据进行顺序建模以展示上下文强化学习的方法。同时基于观察…...

Dubbo 3.x源码(29)—Dubbo Consumer服务调用源码(1)服务调用入口

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo Consumer服务调用源码。 此前我们学习了Dubbo服务的导出和引入的源码&#xff0c;现在我们来学习Dubbo服务调用的源码。 此前的文章中我们讲过了最上层代理的调用逻辑(服务引用bean的获取以及懒加载原理)&#xff1a;业务引入的接口…...

Linux内核同步机制:确保系统稳定与高效

在复杂而庞大的 Linux 系统世界中&#xff0c;内核就如同一位有条不紊的指挥官&#xff0c;协调着各种任务和资源的分配。而其中&#xff0c;内核同步机制则是确保整个系统稳定与高效运行的关键要素。想象一下&#xff0c;众多的进程和线程在 Linux 内核的舞台上同时登场&#…...

firebase简介

Firebase 是一个由 Google 提供的移动应用开发平台&#xff0c;旨在帮助开发者快速构建和管理应用程序。它提供了一系列强大的工具和服务&#xff0c;特别适合用于开发和管理 Web 和移动应用。以下是 Firebase 的一些核心功能&#xff1a; 实时数据库&#xff1a;Firebase 提供…...

利用Termux在安卓手机中安装 PostgreSQL

利用Termux在安卓手机中安装 PostgreSQL ⬇️Termux下载 点击下载 在 Termux 中安装 PostgreSQL 可以按照以下步骤进行&#xff1a; 1. 更新 Termux 包管理器 先更新软件包列表和已安装的软件包&#xff1a; pkg update && pkg upgrade -y2. 安装 PostgreSQL 使…...

windows安装WSL完整指南

本文首先介绍WSL&#xff0c;然后一步一步安装WSL及Ubuntu系统&#xff0c;最后讲解如何在两个系统之间访问和共享文件信息。通过学习该完整指南&#xff0c;能帮助你快速安装WSL&#xff0c;解决安装和使用过程中的常见问题。 理解WSL&#xff08;Windows Subsystem for Linux…...

Windows Docker笔记-安装docker

安装环境 操作系统&#xff1a;Windows 11 家庭中文版 docker版本&#xff1a;Docker Desktop version: 4.36.0 (175267) 注意&#xff1a; Docker Desktop 支持以下Windows操作系统&#xff1a; 支持的版本&#xff1a;Windows 10&#xff08;家庭版、专业版、企业版、教育…...