查看: 1390| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

【求教贴】Stanford-Machine Learning-Week3 Assignment中gradient的表示

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
最近在跟这个课,MATLAB用得不熟,代码写起来有困难
assignment3里的Regularized logistic regression有一题要写出它的cost function和gradient
gradient公式即:

看别人写这个式子的代码如下,确实可用
  1. h = sigmoid(X * theta);
  2. t = theta(2:length(theta),1);
  3. J = m^(-1)*sum((-1)*y.*log(h)-(1-y).*log(1-h))+0.5*(lamda/m)*sum(t.^2);
  4. grad = m^(-1)*((h - y).'*X)';
  5. tmp = grad;
  6. tmp=tmp+(lamda/m)*theta;
  7. grad = [grad(1,1);tmp(2:length(theta),1)];
复制代码
求问:最后一句grad=[grad(1,1)......]这是啥意思?
小白初到,还望各位不要嫌弃

上一篇:【活动】我在美国上机器学习(Machine Learning)课程的感受和总结
下一篇:Coursera Stanford ML课我怎么觉得有些难。。。
🔗
安如画 2015-9-20 15:39:12 | 只看该作者
全局:
感觉是生成了一个新的grad的列向量
回复

使用道具 举报

🔗
wowmomsos 2015-9-23 23:35:45 | 只看该作者
全局:
这段代码总是用标量乘法和sum表示矩阵乘法,可读性很差。
你看看我的代码。写机器学习代码时,一定要向量化!

  1. z = sigmoid(X*theta);
  2. J = (-(log(z)'*y + log(1-z)'*(1-y)) + theta(2:end)'*theta(2:end)*lambda*0.5)/m;
  3. grad = (X'*(z-y))/m;
  4. grad(2:end) = grad(2:end) + lambda*theta(2:end)/m;
复制代码
回复

使用道具 举报

🔗
 楼主| liuyijuner 2015-9-25 13:53:23 | 只看该作者
全局:
wowmomsos 发表于 2015-9-23 23:35
这段代码总是用标量乘法和sum表示矩阵乘法,可读性很差。
你看看我的代码。写机器学习代码时,一定要向量 ...

谢谢你的建议
回复

使用道具 举报

🔗
 楼主| liuyijuner 2015-9-25 13:53:52 | 只看该作者
全局:
安如画 发表于 2015-9-20 15:39
感觉是生成了一个新的grad的列向量

好像是这样子
回复

使用道具 举报

🔗
shurui91 2015-10-3 06:21:52 | 只看该作者
全局:
这个课地里有统一的讨论帖甚至配套的中文教程吗?还没编程一开始的公式啥的看着就头疼。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表