首页 > 其他分享 >神经网络的反向传导的自动微分中前向模式和后向模式的适用情况

神经网络的反向传导的自动微分中前向模式和后向模式的适用情况

时间:2024-01-24 18:15:31浏览次数:21  
标签:中前 矩阵 微分 求导 神经网络 模式 维度

神经网络的自动微分求导这里不做解释和介绍,自动微分求导中的前向模式和后向模式这里也不做解释和介绍。

根据资料显示,如果一个神经网络的输入层维度为M,输出层维度为N,当M>N时,反向自动微分求导的后向模式计算效率高于前向模式,反之,如果M<N时,前向模式计算效率高于后向模式,下面给出自己的个人理解的解释:



假设一个神经网络是全连接的MLP,输入层维度为8,第一个隐藏层维度为6,第二个隐藏层维度为4,第三个隐藏层维度为2,输出层维度为1。


在自动微分求导时,如果是前向模式,那么对一个隐藏层的权重求导的计算过程的各个维度为:

中间过程的各个导数矩阵:

8x6矩阵,6x4矩阵,4x2矩阵,2x1矩阵

前向模式对第一隐藏层权重的导数计算:
第一步:8x6矩阵 乘以 6x4矩阵,得到8x4矩阵;
第二步:8x4矩阵 乘以 4x2矩阵,得到8x2矩阵;
第三步:8x2矩阵 乘以 2x1矩阵,得到8x1矩阵。
最终得到第一隐藏层的权重的倒数矩阵,8x1矩阵。


后向模式对第一隐藏层权重的导数计算:
第一步:2x1矩阵 乘以 4x2矩阵,得到4x1矩阵;
第二步:4x1矩阵 乘以 6x4矩阵,得到6x1矩阵;
第三步:6x1矩阵 乘以 8x6矩阵,得到8x1矩阵。
最终得到第一隐藏层的权重的倒数矩阵,8x1矩阵。


由此可以看到,在进行自动微分求导计算的过程中,当M>N时,后向模式计算的更少,反之,M<N时,前向模式计算的更少。


前向模式时,每算完一步就可以把该步的前向传导计算和自动求导的微分矩阵进行释放,因此该种计算模式可以更好的节省显存;

后向模式时,我们可以对前面部分的前向传导的计算结果进行释放,然后根据后半部分神经网络的后向自动微分和前向传导计算出中间神经网络的后向导数值,然后重新计算前向传导时中间网络层的结果,使用该种方式来节省显存。

可以看到,前向模式可以更好的节省显存(因为自动微分是从前向后计算的,可以计算完一步就释放该步的前向计算的矩阵和自动微分的矩阵)。




标签:中前,矩阵,微分,求导,神经网络,模式,维度
From: https://www.cnblogs.com/devilmaycry812839668/p/17985436

相关文章

  • 大数据量插入、更新改成批量模式
    可以看出实际应用场景中储位数据量比较大,优先优化储位相关接口本机环境优化前耗时:储位个数3200update时间28578insert时间21758    本机环境优化后耗时:储位个数3200update时间5169insert时间1733    将数据库连接......
  • 【中介者模式(Mediator)】使用Java实现中介者模式
    引言中介者,何为中介者,顾名思义就是我们的在处理A和B之间的关系的时候,引入一个中间人,来处理这两者之间的关系,例如生活中我们需要去租房,买房,都会有中介,来处理房东和租客之间的协调关系,这个就是中介者,落实到具体的代码中呢,就像我们的Controller可能会依赖很多的Service层面......
  • 迭代器模式
    遍历集合用的,不暴露集合的内部表示,但又能顺序访问内部的元素定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示类型:行为型适用场景:访问一个集合对象的内容而无需暴露它的内部表示为遍历不同的集合结构提供一个统一的接口优点:分离了集合对象......
  • CS与BS架构模式概述
    ###CS(ClientServer):客户端服务器架构优点:利用客户端机器的资源,减轻服务器的负荷;一部分安全要求不高的计算任务、存储任务都会放在客户端执行,不需要把所有的计算和存储都放在服务器执行,减轻服务器压力,也减轻网络访问速度。缺点:需要安装本地客户端,后期升级维护成本高。适用......
  • H3C的设备如何从云模式转到FIT 模式
    1.说明[58c7-ac95-7b40]ap-mode?anchor-acSettheAPmodetoanchorACanchor-fitSettheAPmodetoanchorFITcloudSettheAPmodetocloudAPfatSettheAPmodetofatAPfitSettheAPmodetofitAP2.案例实验(设备连接拓......
  • C# Switch 语句进阶:模式匹配详解与实例演示
     在C#中,switch语句的模式匹配在C#7.0及以上版本中引入。以下是switch语句中常见的模式及其使用方法的示例:1.类型模式:优点: 用于检查对象的运行时类型,使代码更具可读性。publicstaticstringGetObjectType(objectobj){switch(obj){caseinti:......
  • 神经网络优化篇:详解调试处理(Tuning process)
    调试处理关于训练深度最难的事情之一是要处理的参数的数量,从学习速率\(a\)到Momentum(动量梯度下降法)的参数\(\beta\)。如果使用Momentum或Adam优化算法的参数,\(\beta_{1}\),\({\beta}_{2}\)和\(\varepsilon\),也许还得选择层数,也许还得选择不同层中隐藏单元的数量,也许还想使用学习......
  • 卷积神经网络学习笔记
    全连接神经网络的结构全连接神经网络的整体结构可以简化为智能函数\(y=f_θ(x)\)输入和输出层一般为数据矩阵全连接网络的单元结构神经网络的思路:从单元到整体一个单元的结构:\(X_1,X_2,X_3...\)是很多矩阵,然后这些矩阵分别乘上对应的权重矩阵,再加上偏置矩阵b,输......
  • 设计模式
    ///<summary>///PLC处理器///</summary>publicinterfaceIPlcHandler{voidRequest(IPlcContextcontext);}///<summary>///PLC的数据上下文///</summary>publicinterfaceIPlcContext{PlcRequestRequest{get;}......
  • 策略模式【结合springboot实现】
    Hello!~大家好啊,很高兴我们又见面了,今天我们一起学习设计模式–【策略模式】初次对此模式不懂的,或者想偷懒的,我强烈建议大家跟着我的一起把概念和代码一起敲一遍!~为啥子??因为我就是这样学会的,哈哈哈!1.首先我们看下此模式的整体UML图selector:选择器又叫做上下文conte......