参考文章:https://blog.csdn.net/u010976453/article/details/54381248
关于layout
在求导的时候有,因为分子和分母可能的维度不太一样,所以两种不同的布局,分别是分子布局和分母布局
假设y(向量)对x(标量)求导:
- 分子布局,即和原来的y相同
- 分母布局,为分子布局的tranpose
对标量的导数
scalar对scalar求导
即最简单的求导
vector对scalar求导
比如一个列向量y,对x求导,结果是y里面的每个值都对x求导
matrix对scalr求导
矩阵里面的每个值都对x求导
对向量的导数
scalar对vector
- 标量y和向量x,求出来的结果是y对每个x(x1,x2 ….xn)求导
- 结果为梯度向量,是标量y在空间Rn的梯度,空间以x为基
- 注意,x是列向量的话,最后求出来的是行的结果
vector对vector
y = [y1,y2 …. ym]
x = [x1,x2 …. xn]
最后求出来的结果是一个m行n列的矩阵,jacobian矩阵
matrix对vector
矩阵y =
[[y11,y12…y1n],
[y21,y22 …y2n],
…
[yn1,yn2 …ynn]
]
向量x = [x1,x2…xn]T
最终的结果是每一行分别对这个x的向量求导,所以矩阵的列数和向量的行数应该先通
对于矩阵
一般只考虑标量对矩阵(剩下的情况和上面类似)
最终结果是这个标量对所有的矩阵内容求导,求出来的是梯度矩阵