cv2 数学基础---矩阵微分
定义
(1) 向量对标量求导 矩阵对标量求导


我们可以看到上述求导过程实际上就是不同函数对变量求导,然后按照向量或者矩阵的形式排列,注意这里结果的结构应该与函数的结构保持一致
(2)标量对向量求导 标量对矩阵求导


这里的理解使同一个函数对不同的变量求导,然后注意结果要和变量的形式保持一致,比如对向量求导,向量如果是$n \times 1$的列向量,结果也是$n \times 1$的列向量,如果是行向量结果也是行向量,如果是$m \times n$的矩阵,结果也是同样大小的矩阵
(3)向量对向量求导


我们可以将上述过程看作函数向量中的每个元素对变量向量求导,这样就是标量对向量求导,然后再把所有结果搭成一个矩阵
当x是行向量时,标量对向量求导得到一个$1 \times n$的行向量,因为有m个函数,所以有m个行向量,最后矩阵就是$m \times n$
当x是列向量时,标量对向量求导得到一个$n \times 1$的列向量,因为有m个函数,所以有m个列向量,最后矩阵就是$n \times m$
重要结论
应用上面的定义,我们可以得到一些十分有用的结论:



应用
下面推导一下在单应变换中使用拉格朗日乘子法得到的函数的驻点的推导:

这个式子:
$\frac{\partial \left [ \left | Ax \right | ^{2 }{2} + \lambda \left ( 1 - \left | x\right | ^{2 } \right ) \right ] }{\partial x} = 0$
我们把它展开可以得到:
$\frac{\partial\left ( Ax\right ) ^{T}Ax }{\partial x} - \lambda \frac{\partial x^{T}x }{\partial x} = 0 $
即$\frac{\partial x^{T} A^{T}Ax }{\partial x} - \lambda \frac{\partial x^{T}x }{\partial x} = 0 $
对于第一项我们应用重要结论中的第六条可以得到:
$\frac{\partial x^{T} A^{T}Ax }{\partial x} = 2 A^{T}A x$
第二项应用第二条得到:
$\lambda \frac{\partial x^{T}x }{\partial x} = 2\lambda x$
代回原式即得:
$A^{T}A x = \lambda x$
cv2 数学基础---矩阵微分的更多相关文章
- 矩阵微分(matrix derivatives)
关于矩阵求导,得到的导数则是矩阵形式:关于矢量求导,得到的导数则是矢量形式:关于标量求导,得到的仍是标量形式.也即关于谁求导,得到的导数形式便和谁的维度信息一致. fx = f(x) grad = n ...
- 矩阵微分与向量函数Taylor展开
参考博客:https://blog.csdn.net/a_big_pig/article/details/78994033
- 《神经网络的梯度推导与代码验证》之FNN(DNN)的前向传播和反向推导
在<神经网络的梯度推导与代码验证>之数学基础篇:矩阵微分与求导中,我们总结了一些用于推导神经网络反向梯度求导的重要的数学技巧.此外,通过一个简单的demo,我们初步了解了使用矩阵求导来批量 ...
- 《神经网络的梯度推导与代码验证》之CNN的前向传播和反向梯度推导
在FNN(DNN)的前向传播,反向梯度推导以及代码验证中,我们不仅总结了FNN(DNN)这种神经网络结构的前向传播和反向梯度求导公式,还通过tensorflow的自动求微分工具验证了其准确性.在本篇章 ...
- 《神经网络的梯度推导与代码验证》之vanilla RNN的前向传播和反向梯度推导
在本篇章,我们将专门针对vanilla RNN,也就是所谓的原始RNN这种网络结构进行前向传播介绍和反向梯度推导.更多相关内容请见<神经网络的梯度推导与代码验证>系列介绍. 注意: 本系列 ...
- 《神经网络的梯度推导与代码验证》之LSTM的前向传播和反向梯度推导
前言 在本篇章,我们将专门针对LSTM这种网络结构进行前向传播介绍和反向梯度推导. 关于LSTM的梯度推导,这一块确实挺不好掌握,原因有: 一些经典的deep learning 教程,例如花书缺乏相关 ...
- coursera机器学习笔记-多元线性回归,normal equation
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- 机器学习 —— 基础整理(七)前馈神经网络的BP反向传播算法步骤整理
这里把按 [1] 推导的BP算法(Backpropagation)步骤整理一下.突然想整理这个的原因是知乎上看到了一个帅呆了的求矩阵微分的方法(也就是 [2]),不得不感叹作者的功力.[1] 中直接使 ...
- 从线性模型(linear model)衍生出的机器学习分类器(classifier)
1. 线性模型简介 0x1:线性模型的现实意义 在一个理想的连续世界中,任何非线性的东西都可以被线性的东西来拟合(参考Taylor Expansion公式),所以理论上线性模型可以模拟物理世界中的绝大 ...
- 吴恩达机器学习CS229课程笔记学习
监督学习(supervised learning) 假设我们有一个数据集(dataset),给出居住面积和房价的关系如下: 我们以居住面积为横坐标,房价为纵坐标,组成数据点,如(2104, 400), ...
随机推荐
- Seal AppManager v0.2 发布:进一步简化应用部署体验
经过近3个月的研发,Seal AppManager v0.2 已正式发布. Seal AppManager 是一款基于平台工程理念的应用统一部署管理平台,于今年4月首次推出.在上一版本中,我们已经释出 ...
- 解决Pyonth读取 yaml文件的中文字体,报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe5
解决方法: 打开pycharm,点击files>setting 如下 改成UTF-8即可 改完后,之前的yaml文件里面的中文会出现乱码情况 删除后重写 即可
- 使用LabVIEW实现 DeepLabv3+ 语义分割含源码
前言 图像分割可以分为两类:语义分割(Semantic Segmentation)和实例分割(Instance Segmentation),前面已经给大家介绍过两者的区别,并就如何在labview上实 ...
- 【WebSocket】多节点下WebSocket消息收发解决案例
单体Webscoket springboot版本: 2.1.1.RELEASE jdk: 1.8 示例代码 WebsocketServer @ServerEndpoint("/client/ ...
- 使用官方推荐的库来测react hook组件
最近写单元测试的时候遇见了一些问题,当我使用使用jest测React. useRef, React. useEffect时,总是测不到, 然后我去查阅了一下官方文档,它推荐了使用下面这个库 @tes ...
- String、StringBuffer、StringBuilder 的区别?
一. 介绍 String.StringBuffer.StringBuilder: 前言: String.StringBuffer.StringBuilder 均在java.lang包下: String ...
- 输入平方米的三种方式㎡ m2 m²
如何在Word中输入平方米字符? 第1种方法 Win10自带输入法,输入"平方米",默认第5个就出来了㎡,也可以直接复制使用. 这种方式最直接,字母m和右上角的2是1个字符,所以不 ...
- 根据图片搜索excel
问题描述:在excel使用中,当我们用大量的excel记录图文信息的时候,如果excel过多,比如成百上千个,里面都是包含大量的图片.这个时候如果想要根据图片快速找到这张图片可能被哪些excel包含, ...
- opencv-python中 boundingRect(cnt)以及cv2.rectangle用法
矩形边框(Bounding Rectangle)是说,用一个最小的矩形,把找到的形状包起来.还有一个带旋转的矩形,面积会更小,效果见下图 首先介绍下cv2.boundingRect(img)这个函数 ...
- Trackbar调色板
我们将会建立一个简单的应用,显示我们指定的颜色.将会建立一个窗口,显示三个trackbar指定RGB三个颜色通道值.可以滑动trackbar来改变相应的颜色.默认情况下,初始颜色为黑色. cv2.ge ...