神经网络向量化

From Ufldl

Jump to: navigation, search
Line 97: Line 97:
</math>
</math>
-
在这里<math>\bullet</math>表示对两个向量按对应元素相乘的运算(译者注:其结果还是一个向量)。为了描述简单起见,我们这里暂时忽略对参数<math>b^{(l)}</math>的求导, 不过在你真正实现反向传播时,还是需要计算关于它们的导数的。
+
在这里<math>\bullet</math>表示对两个向量按对应元素相乘的运算(译者注:其结果还是一个向量)。为了描述简单起见,我们这里暂时忽略对参数<math>b^{(l)}</math>的求导,不过在你真正实现反向传播时,还是需要计算关于它们的导数的。
-
假定我们已经实现了向量化的正向传播方法,如前面9-5那样计算了矩阵形式的变量<tt>z2</tt>, <tt>a2</tt>, <tt>z3</tt>和<tt>h</tt>,那么反向传播的非向量化版本可如下实现:
+
假定我们已经实现了向量化的正向传播方法,如前面那样计算了矩阵形式的变量<tt>z2</tt>, <tt>a2</tt>, <tt>z3</tt>和<tt>h</tt>,那么反向传播的非向量化版本可如下实现:
<syntaxhighlight>
<syntaxhighlight>
Line 113: Line 113:
</syntaxhighlight>  
</syntaxhighlight>  
-
在这个实现中,有一个<tt>for</tt>循环,而我们想要一个能同时处理所有样本、且去除这个<tt>for</tt>循环的向量化版本。
+
在这个实现中,有一个<tt>for</tt>循环。而我们想要一个能同时处理所有样本、且去除这个<tt>for</tt>循环的向量化版本。
-
为做到这一点,我们先把向量<tt>delta3</tt>和<tt>delta2</tt>替换为矩阵,其中每列对应一个训练样本。我们还要实现一个函数<tt>fprime(z)</tt>,该函数接受矩阵形式的输入<tt>z</tt>,并且对矩阵的每列分别执行<math>f'(\cdot)</math>。这样,上面<tt>for</tt>循环中的4行Matlab代码中每行都可单独向量化,以一行新的(向量化的)Matlab代码替换它(不再需要外层的<tt>for</tt>循环)。
+
为做到这一点,我们先把向量<tt>delta3</tt>和<tt>delta2</tt>替换为矩阵,其中每列对应一个训练样本。我们还要实现一个函数<tt>fprime(z)</tt>,该函数接受矩阵形式的输入<tt>z</tt>,并且对矩阵的按元素分别执行<math>f'(\cdot)</math>。这样,上面<tt>for</tt>循环中的4行Matlab代码中每行都可单独向量化,以一行新的(向量化的)Matlab代码替换它(不再需要外层的<tt>for</tt>循环)。
-
在[[Exercise:Vectorization|向量化练习]]中,我们要求你自己去推导出这个算法的向量化版本。如果你已经能从上面的描述中了解如何去做,那么我们强烈建议你去实践一下。虽然我们已经为你准备了反向传播的[[Backpropagation vectorization hints|向量化实现提示]],但还是鼓励你在不看提示的情况下自己去推导一下。
+
在[[Exercise:Vectorization|向量化练习]]中,我们要求你自己去推导出这个算法的向量化版本。如果你已经能从上面的描述中了解如何去做,那么我们强烈建议你去实践一下。虽然我们已经为你准备了[[Backpropagation vectorization hints|反向传播的向量化实现提示]],但还是鼓励你在不看提示的情况下自己去推导一下。
==稀疏自编码网络==
==稀疏自编码网络==

Revision as of 14:11, 16 March 2013

Personal tools