我使用Java + Jblas (第一次用户),并试图乘两个矩阵。一个是163x4,另一个是4x1矩阵。我希望这样一个乘法的结果是一个163x1矩阵。然而,使用:
FloatMatrix a = b.mmuli(c);我发现了一个错误:
矩阵必须具有相同的长度(is: 652和4)
现在,虽然我假设,这是完全合理的程序,我感到困惑。同样的乘法在八倍频程中也能很好地工作(当然也适用一些魔法)。但现在要让这件事起作用,我需要知道这是什么巫术?
编辑
以下是八度文件中有关广播(巫术)的内容:
在所有维度相等的情况下,不发生广播,并进行普通的逐元素运算.对于维度较高的数组,如果维数不相同,则将缺失的尾随维视为1。当其中一个维度为1时,该单例维度的数组将沿该维度复制,直到与另一个数组的维度匹配为止。
这意味着我只复制了4x1矩阵163次。然后我就可以执行乘法了,但是现在不是我想要的163x1矩阵,而是一个163x4矩阵。这对我来说很奇怪。我现在的解决方案是什么?
发布于 2015-06-01 10:00:21
所以我终于想明白了。这就是其中一个错误..。一定是
FloatMatrix a = b.mmul(c);这里的错误是按元素进行乘法。
https://stackoverflow.com/questions/30535159
复制相似问题