Octave教程(六)

向量化

对于上图的假设函数h,我们在非向量化的情况下可写出如下代码:

prediction = 0.0;

for j = 1:n+1,
    prediction = prediction + theta(j) * X(j);
end;

注:j从1~n+1是因为在Octave中下标是从1开始,虽然我们手工标注是从0开始的。

但若我们在向量化的情况下可写出如下代码:

prediction = theta' * X

从上述对比中,我们可以看出在向量化的情况下,我们只需一行代码即可完成假设函数h的计算,效率比非向量化的情况下的代码运行效率高。

现在,让我们看看使用C++语言,在非向量化的情况下的代码:

double prediction = 0.0;

for (int j = 0; j <= n; j++)
    prediction += theta[j] * X[j];

然后,我们再看看在向量化的情况下的代码:

double prediction = theta.tanspose() * X

通过上述代码,我们推荐在计算矩阵或向量时进行向量化操作(和使用相应的库函数),使我们代码变得简洁高效。

对于线性回归的梯度下降算法,在非向量化的情况下,我们要分别计算出θ0,θ1,θ2, ······


在向量化的情况下,我们可以按照图中所示的操作写出相关代码:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值