矢量化编程

From Ufldl

Jump to: navigation, search
Line 1: Line 1:
 +
当使用学习算法时,一段更快的代码通常意味着项目进展更快。例如,如果你的学习算法需要花费20分钟运行完成,这意味着你每个小时能“尝试”3个新主意。但是假如你的程序需要20个小时来运行,这意味着你一天只能“尝试”一个新主意,因为你需要花费这么长时间来等待程序的反馈。对于后者,假如你可以提升代码的效率让其只需要运行10个小时,那么你的效率差不多提升一倍。
当使用学习算法时,一段更快的代码通常意味着项目进展更快。例如,如果你的学习算法需要花费20分钟运行完成,这意味着你每个小时能“尝试”3个新主意。但是假如你的程序需要20个小时来运行,这意味着你一天只能“尝试”一个新主意,因为你需要花费这么长时间来等待程序的反馈。对于后者,假如你可以提升代码的效率让其只需要运行10个小时,那么你的效率差不多提升一倍。
Line 4: Line 5:
例如,假设<math>x \in \Re^{n+1}</math> 和<math>\textstyle \theta \in \Re^{n+1}</math> 为向量,需要计算<math>\textstyle z = \theta^Tx</math> ,那么可以按以下方式实现(使用Matlab):
例如,假设<math>x \in \Re^{n+1}</math> 和<math>\textstyle \theta \in \Re^{n+1}</math> 为向量,需要计算<math>\textstyle z = \theta^Tx</math> ,那么可以按以下方式实现(使用Matlab):
 +
<syntaxhighlight lang="matlab">
<syntaxhighlight lang="matlab">
z = 0;
z = 0;
Line 12: Line 14:
或者可以更加简单的写为:
或者可以更加简单的写为:
 +
<syntaxhighlight lang="matlab">
<syntaxhighlight lang="matlab">
z = theta' * x;
z = theta' * x;
Line 19: Line 22:
通常,一个编写Matlab/Octave程序的诀窍是:
通常,一个编写Matlab/Octave程序的诀窍是:
 +
::'''代码中尽可能避免显式的for循环。'''
::'''代码中尽可能避免显式的for循环。'''
Line 26: Line 30:
一旦对矢量化常见的方法和技巧熟悉后,你将会发现对代码进行矢量化通常并不太费劲。矢量化可以使你的代码运行的更快,而且在某些情况下,还简化了你的代码。
一旦对矢量化常见的方法和技巧熟悉后,你将会发现对代码进行矢量化通常并不太费劲。矢量化可以使你的代码运行的更快,而且在某些情况下,还简化了你的代码。
 +
 +
 +
{{Vectorized Implementation}}
 +
 +
 +
==中文译者==
 +
 +
@caleb07, @咖灰茶,@邓亚峰-人脸识别

Revision as of 01:01, 29 March 2013

Personal tools