Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 矢量化问题_Machine Learning_Octave - Fatal编程技术网

Machine learning 矢量化问题

Machine learning 矢量化问题,machine-learning,octave,Machine Learning,Octave,假设有两个列向量vv和ww,每个列向量有7个元素(即,它们的维度为7x1)。考虑下面的代码: z = 0; for i = 1:7 z = z + v(i) * w(i) end A) z=总和(v.*w) B) z=w'*v C) z=v*w D) z=w*v 根据答案,答案(A)和(B)是正确的答案,有人能帮我理解为什么吗 为什么z=v*w'与答案(B)相似,但只是操作顺序发生变化,它是假的?既然我们想要一个根据定义只有一列的向量,我们不需要一个这样大小的矩阵:1x7*7x1=1x1吗

假设有两个列向量vv和ww,每个列向量有7个元素(即,它们的维度为7x1)。考虑下面的代码:

z = 0;
for i = 1:7
  z = z + v(i) * w(i)
end
A) z=总和(v.*w)

B) z=w'*v

C) z=v*w

D) z=w*v

根据答案,答案(A)和(B)是正确的答案,有人能帮我理解为什么吗


为什么z=v*w'与答案(B)相似,但只是操作顺序发生变化,它是假的?既然我们想要一个根据定义只有一列的向量,我们不需要一个这样大小的矩阵:1x7*7x1=1x1吗?那么为什么z=v'*w是假的呢?它给出了与答案(B)相同的维度

z=v'*w
为真,等于
w'*v

它们都构成1*1矩阵,这是一个八度的数值

见此:

octave:5> v = rand(7, 1);
octave:6> w = rand(7, 1);
octave:7> v'*w
ans =  1.3110
octave:8> w'*v
ans =  1.3110
octave:9> sum(v.*w)
ans =  1.3110

答案A和B都执行两个向量的点积,其结果与提供的代码相同。答案A首先执行两个列向量的元素乘积(*),然后对这些中间值求和。答案B执行相同的数学运算,但通过点积(即矩阵乘法)执行

答案C不正确,因为它将在未对齐的矩阵(7x1和7x1)上执行矩阵乘法。D也是如此

z=v*w'
不是选项之一,它是不正确的,因为它将产生7x7矩阵(而不是所需的1x1标量值)。关键是执行矩阵乘法时顺序很重要<代码>(1xN)X(Nx1)->(1x1),而
(Nx1)X(1xN)->(NxN)


z=v'*w
实际上是一个正确的解决方案,但并不是作为选项之一提供的。

z=v'*w不在选项中。这个问题听起来好像您没有访问MATLAB的权限。然后安装OCTAVE(它主要是MATLAB的一个开源克隆)并尝试它。