首页 > 代码库 > ufldl学习笔记与编程作业:Vectorization(向量化/矢量化)

ufldl学习笔记与编程作业:Vectorization(向量化/矢量化)

ufldl学习笔记与编程作业:Vectorization(向量化/矢量化)


ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践。

在deep learning高质量群里面听一些前辈说,不必深究其他机器学习的算法,可以直接来学dl。

于是最近就开始搞这个了,教程加上matlab编程,就是完美啊。

新教程的地址是:http://ufldl.stanford.edu/tutorial/


本节学习链接:http://ufldl.stanford.edu/tutorial/supervised/Vectorization/


什么是向量化?怎么样向量化?

简单来说,向量化在代码的体现就是,把一些for循环的操作,用矩阵操作的形式代替。

教程中举了一些例子,可以去看看。

比如说,线性回归,求预测值时,普通做法是一个example求一次,m个example就得循环m次。

而向量化操作,用一个矩阵相乘的方法,一次性把m个example的预测值都求出来。

个人觉得,要实现向量化编程,必须个人头脑中对模型中主要数据(矩阵)都要有清晰地印象,特别是矩阵的维度。


为什么要向量化?

1 代码简洁;2 速度快。

主要是速度快。一般你自己所写的一些循环操作是比MATLAB封装好的矩阵操作是慢很多的。因为那些MATLAB数值计算库是根据科学家的并行运算的研究写出来的。当然,你牛逼的话,或许可以写出比那些库更快的代码。


当初我就是自不量力,在cuda上写一些核函数做运算,后来结果当然是比cublas慢很多。

因此,想写一个比caffe快的cnn框架,就得高一段落了。


这节的编程作业是对线性回归和逻辑回归进行向量化编程。

由于我之前已经是向量化编程了,所以这里就不列代码了。



本文作者:linger

本文链接:http://blog.csdn.net/lingerlanlan/article/details/38390429