元素操作比矢量操作更直观,因为一个矩阵的元素清楚地映射到另一个矩阵上,为了获得结果,你只需要执行一个算术操作。(示例代码位于此处。)
对于向量矩阵运算,你必须首先建立直觉,并执行多个步骤。矩阵乘法有两种基本类型:内(点)积和外积。内积产生一个减少维度的矩阵,外部积产生一个维度扩大的矩阵。助记法:向外扩张,向内收缩。
内积
与哈达马积,哈达马积要求两个矩阵具有相等的行和列,内积只要求第一个矩阵的列数等于第二个矩阵的行数。例如,这是可行的
[3.0]
[1.0 ,2.0] * [4.0] = (1.0 * 3.0) + (2.0 * 4.0) = 11
image.gif
请注意,1 x 2行乘以2 x 1列生成标量。此操作将维度减小到1,1。你可以想象将行向量[1.0,2.0]顺时针旋转以站在其末端,与列向量相对。然后两个顶部的元素相乘,底部的两个也是相乘的,两个乘积被添加到一个标量中进行合并。
在ND4J中,你可以创建如下两个向量:
INDArray nd = Nd4j.create(new float[]{1,2},new int[]{2}); //行向量
INDArray nd2 = Nd4j.create(new float[]{3,4},new int[]{2, 1}); //列向量
image.gif
并像这样把它们相乘
nd.mmul(nd2);