首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将转置矩阵与jblas相乘

将转置矩阵与jblas相乘
EN

Stack Overflow用户
提问于 2014-03-10 06:12:58
回答 2查看 613关注 0票数 2

我正在用Jblas实现反向传播和梯度下降。

第一层是一个向量A: DoubleMatrix(M,1)

第二层是一个向量B: DoubleMatrix(N,1)

它们之间是权重W: DoubleMatrix(M,N)

在前向传递过程中,我将B=W\乘以A

代码语言:javascript
复制
W.mmulti(A, B)

在反向传播过程中,我计算A= (B^T \乘以W)^T

代码语言:javascript
复制
A = B.transpose().mmul(W).transpose()

我已经写了代码,所以所有的东西都是就地计算的,而且速度很快。但是Jblas transpose()方法创建一个全新的对象并复制所有数据,这在每次迭代中调用两次是相当昂贵的。有没有办法在乘法过程中使用DoubleMatrix转置,而不进行所有这些复制?这似乎很容易在内部实现-使用相同的数据对象,但将调用切换为行和列。

EN

回答 2

Stack Overflow用户

发布于 2014-09-30 13:58:10

我也问过自己一个很好的问题。我没有答案,但这个简单的事实可以避免其中一个换位:

(B^T \乘以W) ^T = W^T *B

所以你会写下

A = W.transpose().mmul(B)

票数 1
EN

Stack Overflow用户

发布于 2015-09-17 21:22:13

nd4j的作者在这里。我们已经添加了nd数组和常量时间转置以及矩阵乘法,它们可以与我们所说的各种“后端”一起工作,其中之一就是jblas。

该API也非常类似于jblas。

结果arr = Nd4j.create(2,2);INDArray结果= arr.mmul(arr);

最好的部分是你得到了cuda和(很快就会添加!)免费的opencl。

对于大多数事情,我们已经迁移到netlib-java,但仍然提供jblas (因为它非常稳定),但在实践中,我们发现在jblas上执行拷贝操作更方便(因为内部不支持偏移)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22288888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档