非监督特征学习与深度学习(三)----向量化
来源:互联网 发布:淘宝旺铺专业版价格 编辑:程序博客网 时间:2024/06/14 05:17
注:本文转载自https://github.com/ysh329/Chinese-UFLDL-Tutorial
因为github上的makedown格式显示的不够完全,看的非常不方便,因此放到CSDN上比较好查阅学习。
向量化(Vectorization)
对于如房价数据的小数据量任务,通常使用线性回归,因为代码不需要执行地非常快。尽管您在练习 1A 和 1B 里是建议使用 for 循环的,但对于较大规模的问题, for 循环的执行效率就比较低了。这是因为在 MATLAB 里,按顺序执行整个样本的循环是缓慢的。为了避免(使用) for 循环,想要重写(这部分)代码,使其能尽可能地在 MATLAB 里高效地执行向量或矩阵操作(这点同样适用于其他语言,包括 Python,C/C++ —— 要尽可能地重用已经优化过的操作,这里特指使用向量计算库来优化计算效率)。
下面是一些在 MATLAB 里各种向量化的操作方法。
案例:多矩阵-向量相乘(Example: Many matrix-vector products)
经常一次计算多个矩阵或矢量的乘积(矩阵乘法)。例如,当对数据集(其中,参数
因此,对于所有的样本
所以,当执行线性回归(Linear Regression)时,可以通过计算
案例:标准化向量(Example: normalizing many vectors)
假设有前文说到的由众多向量
X_norm = sqrt( sum(X.^2,1) ); Y = bsxfun(@rdivide, X, X_norm);
第一行代码,先对 bsxfun
函数的作用可以看成是对变量 Xnorm
的扩展或者复制,便会得到与矩阵 @rdivide
对同维矩阵的同位置的所有元素,实现右除操作)。上述例子中,实现了用二元操作函数对每个元素 bsxfun
可以与几乎所有的二元操作函数使用(例如,@plus,@ge或@eq),更多详情可以查看 bsxfun
的 MATLAB 文档。
案例:梯度计算的矩阵乘法(Example: matrix multiplication in gradient computations)
在线性回归的梯度计算中,其形式可概括为:
当有通过单个索引(公式中的
因此,由于矩阵的整体计算思想,不需要逐个
% X(j,i) = j'th coordinate of i'th example.% y(i) = i'th value to be predicted; y is a column vector.% theta = vector of parametersy_hat = theta'*X; % so y_hat(i) = theta' * X(:,i). Note that y_hat is a *row-vector*.g = X*(y_hat' - y);
进一步优化练习 1A 和 1B(Exercise 1A and 1B Redux)
返回您练习的 1A 和 1B 代码中,在 ex1a_linreg.m
和 ex1b_logreg.m
文件中,您将发现调用 minFunc
时分别使用的是文件 linear_regression_vec.m
和 logistic_regression_vec.m
,但却是被注释掉的,而不是用 linear_regression.m
和 logistic_regression.m
文件。在本次练习中,请您将 linear_regression_vec.m
和 logistic_regression_vec.m
里的代码以(前文所讲过的)向量化的方式实现并补充完整。将 ex1a_linreg.m
和 ex1b_logreg.m
文件中的注释取消掉,并比较二者代码的运行时间,检验(现在的代码)是否和先前原本的代码得到的结果是一样的。
- 非监督特征学习与深度学习(三)----向量化
- 非监督特征学习与深度学习(八)----神经网络向量化
- 非监督特征学习与深度学习(十)----池化
- 非监督特征学习与深度学习(九)----使用卷积进行特征提取
- 非监督特征学习与深度学习(五)----Softmax 回归(Softmax Regression)
- 非监督特征学习与深度学习(一)----线性回归
- 非监督特征学习与深度学习(二)----逻辑回归
- 非监督特征学习与深度学习(四)----调试:梯度检查
- 非监督特征学习与深度学习(七)----多层神经网络
- 非监督特征学习与深度学习(十一)----优化方法:随机梯度下降
- 非监督特征学习与深度学习(十二)---- 卷积神经网络
- 深度学习中向量化与非向量化计算的差别
- 深度学习(三)单层非监督学习网络分析
- 【深度学习】向量化加速(1)
- 监督学习与非监督学习
- 监督学习与非监督学习
- 监督学习与非监督学习
- 监督学习与非监督学习
- 对象
- POJ 2376-Cleaning Shifts
- Java二维码生成和解析
- Swift中autoclosure和noescape关键字
- 媒体查询
- 非监督特征学习与深度学习(三)----向量化
- Volley和XUtils区别
- 一个例子理解装饰器模式
- nginx(二)负载均衡设置
- SSH -- 建立本地GIT仓库和Github的连接
- Mysql学习之路03-列属性
- 前端编辑器-webstrom使用交谈
- 数据库恢复挂起
- 关掉Windows10的计划自动重启行之有效的方法