我正在使用Java + Jblas(第一次使用者),我正在尝试将两个矩阵相乘。一个是163x4,另一个是4x1矩阵。我希望这种乘法的结果是一个163x1矩阵。但是使用:
FloatMatrix a = b.mmuli(c);
我收到错误:
矩阵必须具有相同的长度(是:652和4)
现在我想,这对于我感到困惑的程序来说非常有意义。相同的乘法在Octave中运行良好(这当然适用于一些魔法)。但是现在为了让这个起作用,我需要知道这是什么样的巫术?
修改
所以这是Octave文档中关于广播(巫术)的内容:
如果所有尺寸相等,则不会发生广播和普通 逐个元素算术发生。对于更高的阵列 尺寸,如果尺寸的数量不相同,则丢失 尾随尺寸被视为1.当其中一个尺寸为1时, 具有该单例维度的数组将被复制 维度,直到它与另一个数组的维度匹配。
所以这意味着我只需要复制4x1矩阵163次。然后我可以执行乘法,但不是我想要的163x1矩阵,我现在有一个163x4矩阵。这对我来说很奇怪。我现在的解决方案是什么?
答案 0 :(得分:2)
所以我终于明白了。这是其中一个错误......它必须是
FloatMatrix a = b.mmul(c);
元素明智的乘法是这里的错误。