计算梯度的三种方法: 数值法,解析法,反向传播法

2023-10-28

 

# coding=gbk
 
"""
function : f(x,y,z) = (x+y)z
"""
# first method   解析法
def grad1(x,y,z):
    dx = z
    dy = z
    dz = (x+y)
    return (dx,dy,dz)
# second method  数值法
def grad2(x,y,z,epi): 
    # dx
    fx1 = (x+epi+y)*z
    fx2 = (x-epi+y)*z
    dx = (fx1-fx2)/(2*epi)
    # dy
    fy1 = (x+y+epi)*z
    fy2 = (x+y-epi)*z
    dy = (fy1-fy2)/(2*epi)
    # dz
    fz1 = (x+y)*(z+epi)
    fz2 = (x+y)*(z-epi)
    dz = (fz1-fz2)/(2*epi)
    return (dx,dy,dz)
# third method 反向传播法
def grad3(x,y,z): 
    # forward
    p = x+y;
    f = p*z;    
    # backward
    dp = z
    dz = p
    dx = 1 * dp
    dy = 1 * dp
    return (dx,dy,dz)
 
print ("<df/dx,df/dy,df/dz>: %.2f %.2f %.2f"%(grad1(1,2,3)))       
print ("<df/dx,df/dy,df/dz>: %.2f %.2f %.2f"%(grad2(1,2,3,1e-5)))
print ("<df/dx,df/dy,df/dz>: %.2f %.2f %.2f"%(grad3(1,2,3)))

 

三种方法的区别:

数值法,通过对自变量的微小变动,来计算其导数;

解析法,计算出导数的表达式;

梯度下降法,已知当前的导数表达式,并计算出当前的导数;

提问1:为何要用梯度下降法,而不是直接使用解析表达式,使其为0?

答:得到解析表达式很容易,使得导数为0 ,这就变成了一个方程式求解问题,计算机并不擅长,而且非常复杂,计算量大,且不好计算,而且会出现无解;而使用梯度下降法,就非常简单,而且计算机是非常擅长优化的;

提问2:为何不使用数值分析法?

答:在参数比较少的情况下,可以使用,但参数极多的情况下,计算量就非常大的;运行效率极差;

提问3:数值分析法有神经网络训练中是否有其地位呢?

答:当自己写梯度计算时,可以用来检验

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算梯度的三种方法: 数值法,解析法,反向传播法 的相关文章

  • 深度学习之图像的数据增强

    在图像的深度学习中 为了丰富图像训练集 更好的提取图像特征 泛化模型 防止模型过拟合 一般都会对数据图像进行数据增强 数据增强 常用的方式 就是旋转图像 剪切图像 改变图像色差 扭曲图像特征 改变图像尺寸大小 增强图像噪音 一般使用高斯噪音
  • Bug解决:ModuleNotFoundError: No module named ‘taming‘

    from taming modules vqvae quantize import VectorQuantizer2 as VectorQuantizer ModuleNotFoundError No module named taming
  • 带你看懂CTC算法

    转自 https zhuanlan zhihu com p 161186907 在文本识别模型CRNN中 涉及到了CTC算法的使用 由于算法的原理涉及内容较多 所以特另开一篇文章对其原理进行叙述 自己在学习CTC过程中也是看了诸多资料才大概
  • 【阅读论文方法总结】

    1 快速浏览摘要 看是否有自己需要的东西 2 如果需要 github上查找相关论文代码 对照着论文进行阅读 这样效率高 能够快速理解
  • 深度学习知识体系学习大全 牛!!

    搬来了大牛的博客 点击直接前往 https www yuque com angsweet machine learning jian jie 配一张大牛的思维导图 具体内容点进去都能看到 数学 机器学习 语言 算法 深度学习 书籍推荐 东西
  • 深度学习网络篇——VGGNet(Part1 网络结构&训练环节)

    我们上篇文章了解了一下NIN 接下来我们来了解一下VGGNet 可以说是另一波的跪舔和膜拜 VGGNet主要是分为两篇文章 第一篇文章来分享一下VGGNet的网络结构还有训练环节 第二篇文章是分享VGGNet做的分类实验和总结 此为第一篇
  • 【GPU】GPU状态显示和部分指标含义

    首先打开C盘 找到NVSMI文件夹 找到nvidia smi exe 打开cmd 将其exe拖到命令提示符窗口 回车后显示GPU信息 相应的指标信息如下 GPU GPU 编号 Name GPU 型号 Persistence M 持续模式的状
  • 笔记︱几款多模态向量检索引擎:Faiss 、milvus、Proxima、vearch、Jina等

    转自 https zhuanlan zhihu com p 364923722 引用文章 7 的开篇 来表示什么是 向量化搜索 人工智能算法可以对物理世界的人 物 场景所产生各种非结构化数据 如语音 图片 视频 语言文字 行为等 进行抽象
  • 深度神经网络中的Inception模块介绍

    深度神经网络 Deep Neural Networks DNN 或深度卷积网络中的Inception模块是由Google的Christian Szegedy等人提出 包括Inception v1 Inception v2 Inception
  • 一文看尽深度学习中的15种损失函数

    转自 https zhuanlan zhihu com p 377799012 在机器学习中 损失函数是代价函数的一部分 而代价函数则是目标函数的一种类型 1 Loss function 即损失函数 用于定义单个训练样本与真实值之间的误差
  • pytorch 入门 DenseNet

    知识点0 dense block的结构 知识点1 定义dense block 知识点2 定义DenseNet的主体 知识点3 add module 知识点 densenet是由 多个这种结构串联而成的 import torch import
  • Pointpillars for object detection

    博客参考 pointpillars代码阅读 prep pointcloud篇 Little sky jty的博客 CSDN博客Brief这一篇内容主要是对函数prep pointcloud进行debug和记录 这里也是dataloader的
  • 深度学习系统为什么容易受到对抗样本的欺骗?

    转自 https zhuanlan zhihu com p 89665397 本文作者 kurffzhou 腾讯 TEG 安全工程师 最近 Nature发表了一篇关于深度学习系统被欺骗的新闻文章 该文指出了对抗样本存在的广泛性和深度学习的脆
  • PyTorch训练简单的全连接神经网络:手写数字识别

    文章目录 pytorch 神经网络训练demo 输出结果 来源 pytorch 神经网络训练demo 数据集 MNIST 该数据集的内容是手写数字识别 其分为两部分 分别含有60000张训练图片和10000张测试图片 神经网络 全连接网络
  • GNN等优缺点总结及解决方案

    https www zhihu com question 338051122 https www zhihu com question 346942899 https zhuanlan zhihu com p 291230435 GCN的缺
  • Going Deeper with convolutions

    Going Deeper with convolutions 转载请注明 http blog csdn net stdcoutzyx article details 40759903 本篇论文是针对ImageNet2014的比赛 论文中的方
  • Matting(抠图)--用深度学习自动去除照片背景

    转自 https zhuanlan zhihu com p 38031181 https zhuanlan zhihu com p 151212267 现在又有一个 AI 能干 Photoshop 的活了 自动抠图 一键去除照片背景 这款
  • 当我们谈人工智能 我们在谈论什么

    我们对一个事物的认识模糊往往是因为宣传过剩冲淡了理论的真实 我们陷在狂欢里 暂时忘记为什么要狂欢 如何踏上这趟飞速发展的列车成为越来越多人心心念念的事情 人工智能的浪潮更像是新闻舆论炒起来的话题 城外的人想进去 城内的人也不想出来 当我们谈
  • 经典网络ResNet介绍

    经典网络ResNet Residual Networks 由Kaiming He等人于2015年提出 论文名为 Deep Residual Learning for Image Recognition 论文见 https arxiv org
  • Anchor是什么?

    1 选择性搜索 Selective Search 先介绍一下传统的人脸识别算法 是怎么检测出图片中的人脸的 以下图为例 如果我们要检测图中小女孩的人脸位置 一个比较简单暴力的方法就是滑窗 我们使用不同大小 不同长宽比的候选框在整幅图像上进行

随机推荐

  • Android性能优化之内存优化

    前言 成为一名优秀的Android开发 需要一份完备的知识体系 在这里 让我们一起成长为自己所想的那样 内存优化可以说是性能优化中最重要的优化点之一 可以说 如果你没有掌握系统的内存优化方案 就不能说你对Android的性能优化有过多的研究
  • OpenHarmony鸿蒙 润和Pegasus套件样例--智能安防

    润和Pegasus套件样例 智能安防 该样例展示OpenHarmony智能安防项目 当温度传感器超过设定值后 或者烟雾传感器检测到烟雾时 会触发蜂鸣器工作 同时通知到HarmonyOS手机上的APP 下载源码 建议将本教程的设备源码下载后
  • 小白入门——“贪吃蛇”的C语言实现(详细)

    C语言实现 编译环境VS 附 easyx图形化 文章末尾 效果图如下 有一些函数kbhit getch 在这表示为 kbhit与 getch 不同编译器原因 注意在Dev等集成开发软件下可能会CE o o 一 引言 作为一个小白 相信大家的
  • 个人工作失误复盘

    今天 同门突然指出了我在去年10月做一项代码测试工作时犯的错误 当时 我的任务是测试某论文中新发布的图像配准算法在我们的航拍图像配准任务上的效果 以便决定是否在其上进行改进 我按照readme文件中的指引下载了预训练权重 并按照项目代码中给
  • 接口自动化测试环境搭建(unittest+requests+HTMLTestRunner)

    该自动化测试框架基于python单元测试框架unittest 使用HTMLTestRunner来生成测试报告 使用Requests xlrd 和 xlwt等库 一 安装python运行环境 安装包官方下载地址 https www pytho
  • GAN+pytorch实现MNIST生成

    背景知识 GAN 原理可以在这里查看 GAN入门简介 pytorch 一个深度学习的框架 关于环境配置有问题 可以在这里查看 从零开始机器学习 代码实现 本文实现最简单的例子 利用GAN生成MNIST的数字 代码如下 导入包 matplot
  • 麦昆PLUS V2-适合中小学STEAM教学的机器人套件

    著名开源硬件商DFRobot推出的最新版本机器人套件麦昆Plus V2来了 它非常适用于中小学STEAM机器人教学 和麦昆LITE相比 麦昆plus V2的优势有哪些 和麦昆LITE相比 具有丰富的扩展接口 充足的电力供应 宽大的机身 麦昆
  • 基于U-Net的递归残差卷积神经网络在医学图像分割中的应用

    转载 版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net weixin 45723705 article details 10709748
  • Ubuntu18.04~Ubuntu22.04安装并配置VNC

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 VNC是什么 二 系统环境 1 前提 2 打开Share开关 3 安装x11vnc 4 测试 1 使用方法 2 重要补充 总结 前言 有些操作需要Desk
  • OpenCV_车辆检测实战

    前言 总纲请看 计算机视觉学习路 1 去除背景 createBackgroundSubtractorMOG2 history 200 代表预存多少视频帧 根据这些帧里面静止的东西判断背景 可以看到树叶形成了很多噪点 所以需要在去除背景前先去
  • 使用create-react-app创建React项目

    目录 环境 开发工具 创建 简单的配置 1 安装craco插件 2 修改package json配置文件 3 重写webpack配置文件 参考 简单记录一下使用create react app创建React项目 使用craco进行了简单的配
  • 如何在 magento 2 中以编程方式清理或刷新缓存?

    如何在 magento 2 中以编程方式清理或刷新缓存 在开发的情况下 开发人员或商家的请求 需要以编程方式清除 刷新缓存 如果您在 Magento2 中以编程方式清除缓存时遇到问题 本文适合您 今天 我们将向您展示如何以编程方式清除缓存
  • uboot 移植计划

    将uboot nandflash 包括ecc 驱动起来 把ethernet驱动起来 然后用mmc boot gt tftp nandflash uboot 到nandflash中去 然后uboot就移植ok了 以后就使用nandflash中
  • get 和 post的区别

    get和post的区别 第一 get和post都是http请求 第二 get请求指定页面的信息 并返回实体主体 get是从服务器获取数据资源 post一般用于修改 更新 服务器上的的资源 是从服务器传送数据 get通过地址栏来传值 post
  • Mysql复制表中数据给另一张表

    个人简介 个人主页 摸鱼 文酱博客主页 博客领域 java编程基础 mysql 写作风格 干货 干货 还是tmd的干货 精选专栏 Java mysql 算法刷题笔记 博主的码云gitee 平常博主写的程序代码都在里面 支持博主 点赞 收藏
  • anaconda创建、删除虚拟环境指令

    使用 c o n d a 创建 删除虚拟环境指令
  • 动态分区、虚拟内存、分页存储、分段存储 简介

    动态分区的特点 分区的个数和大小可变 存在内存碎片 动态分区 就是动态的判断某一块的内存空间能否存储 不会找到刚刚好的 一般都是能放进去就放了 其他剩下的区域 又交给其他程序进行存储 然后几轮下来 就会存在很小的空间 无法利用 这就是内存的
  • OAuth基础介绍

    什么是OAuth OAuth是为解决应用之间 网站之间互相访问的一种简单 标准 安全的API授权协议 官网对其的定义 An open protocol to allow secure API authorization in a simpl
  • 面试题 03.02. 栈的最小值-辅助栈做法

    面试题 03 02 栈的最小值 请设计一个栈 除了常规栈支持的pop与push函数以外 还支持min函数 该函数返回栈元素中的最小值 执行push pop和min操作的时间复杂度必须为O 1 示例 MinStack minStack new
  • 计算梯度的三种方法: 数值法,解析法,反向传播法

    coding gbk function f x y z x y z first method 解析法 def grad1 x y z dx z dy z dz x y return dx dy dz second method 数值法 de