首页 > 代码库 > 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