神经网络(11)--具体实现:unrolling parameters

摘要:
如何unroll成向量的例子如上图所示,我们可以将矩阵转换为向量,也可以将向量利用reshape变为矩阵。具体的unrolling如何工作的在costFunction中,我们会从thetaVec中得到Θ,Θ,Θ,,这样方便我们计算后面所需要的D,D,D,和J(Θ);然后再将这些D,D,Dunrollto得到gradientVec进行返回。总结使用矩阵的情况:当做forwardpropagation和backpropagation时,我们需要使用矩阵来计算,这里就需要用reshape来构建矩阵。

我们需要将parameters从矩阵unrolling到向量,这样我们就可以使用adanced optimization routines.

unroll into vectors

神经网络(11)--具体实现:unrolling parameters第1张

costFunction与fminunc里面的theta都是n+1维的向量,costFunction的返回值gradient也是n+1维的向量。

但是当我们使用神经网络时,我们的Θ和gradient都是一个矩阵,而不是一个向量.在这儿我们的目标是将这些矩阵展开为向量,这样就可以使用上面的这两个函数了。

如何unroll成向量的例子

神经网络(11)--具体实现:unrolling parameters第2张

如上图所示,我们可以将矩阵转换为向量(thetaVec and DVec are big long vector),也可以将向量利用reshape变为矩阵。

具体的unrolling如何工作的

神经网络(11)--具体实现:unrolling parameters第3张

在costFunction中,我们会从thetaVec中得到Θ(1)(2)(3),,这样方便我们计算后面所需要的D(1),D(2),D(3),和J(Θ);

然后再将这些D(1),D(2),D(3)unroll to 得到gradientVec进行返回。

总结(什么时候使用矩阵,什么时候使用向量)

使用矩阵的情况: 当做forward propagation和 back propagation时,我们需要使用矩阵来计算,这里就需要用reshape来构建矩阵。

使用向量的情况: 当使用fminunc这些advanced算法的时候,这些函数的参数是向量,这时我们需要将矩阵转化为向量来计算。

免责声明:文章转载自《神经网络(11)--具体实现:unrolling parameters》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java中终止线程的三种方式mysql5.7 column cannot be null下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

深入理解Faiss 原理&源码 (一) 编译

目录 深入理解Faiss 原理&源码 (一) 编译 mac下安装 安装mac xcode工具包 安装 openblas 安装swig 安装libomp 编译faiss 附录 深入理解Faiss 原理&源码 (一) 编译 Faiss系列, 从单机lib到构建大规模分布式向量检索系统, 且听我娓娓道来 Faiss是什么? F...

卷积神经网络(CNN)

卷积神经网络介绍卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。 最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。 卷积层完成的操作,可以认为是受局部感受野概念的启发,而池化层,主要是为了降低数据维度。 综合起来说,CNN通过卷积来模拟特征区...

矩阵求逆

LuoguP4783 思路: 求A的逆矩阵,把A和单位矩阵I放在一个矩阵里 对A进行加减消元使A化成单位矩阵 此时原来单位矩阵转化成逆矩阵 原理大概就是 A(逆) * [A I] = [I A(逆)] Code: 1 #include <bits/stdc++.h> 2 #define ll long long 3 using namespa...

二维数组实现回型数算法

import java.util.Arrays; class Main { public static void main(String[] args) { System.out.println("-----------回型数实现-----------"); int n=3;// 总数 int[][] ar...

使用numpy教你复习线性代数基础

楔子 下面我们来一起复习一下线性代数的基础知识,并同时使用numpy进行演示,所以需要你有一些关于numpy的知识(但不需要太多)。另外在线性代数中,存在行列式和矩阵,它们长得都差不多,都类似于二维表的格式。但是行列式要求其行数和列数必须相等,但是矩阵则没有此要求,而我们在创建在numpy中创建行列式和矩阵的时候均使用numpy.array这个函数,这个函...

谷歌发布"自动机器学习"技术 AI可自我创造

谷歌发布"自动机器学习"技术 AI可自我创造 据Inverse报道,今年5月份,谷歌宣布其人工智能(AI)研究取得重大进展,似乎帮助科幻小说中最耸人听闻的末日预言成为现实。谷歌推出名为“自动机器学习(AutoML)”的技术,在无需人类工程师的支持下,允许AI进行自我创造。 从表面上看,这种技术可能会让人觉得AI发展终于迎来“奇点时刻”,它正在失去控制。但...