神经网络向量化

From Ufldl

Jump to: navigation, search
Line 15: Line 15:
更具体点来说,参照逻辑回归向量化的例子,我们用Matlab/Octave风格变量<tt>x</tt>表示包含输入训练样本的矩阵,<tt>x(:,i)</tt>代表第<math>\textstyle i</math>个训练样本。则x正向传播步骤可如下实现:
更具体点来说,参照逻辑回归向量化的例子,我们用Matlab/Octave风格变量<tt>x</tt>表示包含输入训练样本的矩阵,<tt>x(:,i)</tt>代表第<math>\textstyle i</math>个训练样本。则x正向传播步骤可如下实现:
-
<syntaxhighlight>  
+
 
 +
<syntaxhighlight>
% 非向量化实现
% 非向量化实现
for i=1:m,  
for i=1:m,  
Line 27: Line 28:
这个<tt>for</tt>循环能否去掉呢?对于很多算法而言,我们使用向量来表示计算过程中的中间结果。例如在前面的非向量化实现中,<tt>z2</tt>,<tt>a2</tt>,<tt>z3</tt>都是列向量,分别用来计算隐层和输出层的激励结果。为了充分利用并行化和高效矩阵运算的优势,我们希望算法能同时处理多个训练样本。让我们先暂时忽略前面公式中的<tt>b1</tt>和<tt>b2</tt>(把它们设置为0),那么可以实现如下:
这个<tt>for</tt>循环能否去掉呢?对于很多算法而言,我们使用向量来表示计算过程中的中间结果。例如在前面的非向量化实现中,<tt>z2</tt>,<tt>a2</tt>,<tt>z3</tt>都是列向量,分别用来计算隐层和输出层的激励结果。为了充分利用并行化和高效矩阵运算的优势,我们希望算法能同时处理多个训练样本。让我们先暂时忽略前面公式中的<tt>b1</tt>和<tt>b2</tt>(把它们设置为0),那么可以实现如下:
-
<syntaxhighlight>  
+
<syntaxhighlight>
% 向量化实现 (忽略 b1, b2)
% 向量化实现 (忽略 b1, b2)
z2 = W1 * x;
z2 = W1 * x;

Revision as of 14:37, 16 March 2013

Personal tools