请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

y和theta用列向量做的

62b2ff6300011c6311820685.jpg62b2ff6700017bc114040521.jpg老师您好,因为xbi.dot(theta)-yi是个数 直接用惩罚也是可以的,但是我做出来theta为什么是个2乘以2的矩阵,然后我用dot做提示我维数不对 我不知道哪里出问题了。。

正在回答 回答被采纳积分+3

插入代码

1回答

liuyubobobo 2022-06-23 05:58:36

init_theta 应该是一个向量,你的创建方法让 init_theta 是一个 2 * 1 的矩阵。


这一小节的代码传送门:https://git.imooc.com/coding-169/coding-169/src/master/06-Gradient-Descent/06-Stochastic-Gradient-Descent/06-Stochastic-Gradient-Descent.ipynb


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 rabbit999 #1
    2*1的矩阵就是一个列向量吧,因为习惯了矩阵乘法的时候写成列向量了 老师这样是不是一个不好的习惯,因为好像挺多地方都要改
    回复 有任何疑惑可以回复我~ 2022-06-23 08:47:16
  • liuyubobobo 回复 提问者 rabbit999 #2
    不是。向量不是矩阵。2 * 1 的矩阵不是列向量。我们在纸上写的时候,这二者“看似”没有区别,但是在计算机中,至少当下的 numpy 的数据结构的表示中,这二者有本质区别。矩阵的维度是 2,哪怕是 1 * n 的矩阵,或者 n * 1 的矩阵,他的维度也是 2。你可以理解成二维数组和一维数组是不一样的,哪怕二维数组中的一个维度为 1。以 Java 为例,二维数组是 int[][],一维数组是 int[]。
    
    但是向量的维度是 1,所以向量其实就是向量,没有行向量和列向量的区别。当我们说行向量或者列向量的时候,其实已经把向量当做矩阵看了,强调他是二维的,行向量是第一个维度是 1,列向量是第二个维度是 1。
    
    在机器学习的编程中,分清楚每个变量到底是向量还是矩阵,是非常重要的。这也就是为什么,在这个课程中,我特意强调了,课程中的变量,小写字母都是向量,大写字母才表示矩阵。同时,shape 函数非常重要,在具体运算前,如果不确定,或者出了问题,一定要使用 shape 函数检查一下你的运算对象和你想象的是一样形状的矩阵或者向量。(使用 shape 有些类似在物理学中经常使用量纲来检查计算的正确性。)
    
    继续加油!:)
    回复 有任何疑惑可以回复我~ 2022-06-23 09:58:04
  • 提问者 rabbit999 #3
    老师我刚刚自己去测试了一下矩阵乘法在np.array中的规则 慢慢的理解了 可能是我对array的运算规律不习惯
    回复 有任何疑惑可以回复我~ 2022-06-23 09:59:13
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号