首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python和R语言实现矩阵乘法的不同结果

用Python和R语言实现矩阵乘法的不同结果
EN

Stack Overflow用户
提问于 2018-06-01 06:32:58
回答 1查看 138关注 0票数 0

我正在转录一个从R程序到python的多层感知器算法,但是我面临一个问题,矩阵乘法给了我一个不同的结果:

R语言:

代码语言:javascript
复制
> hidden <- matrix(c(-0.4442772, -0.1844143, 0.2783537, 0.2599441, -0.3190043, 0.2062185), nrow=2, ncol=3) 
> Xp <- c(0, 1, 1)
> hidden %*% Xp

           [,1]
[1,] -0.0406506
[2,]  0.4661626

Python:

代码语言:javascript
复制
>>> import numpy as np
>>> Xp = np.array([0, 1, 1])
>>> hidden = np.asmatrix([[-0.4442772, -0.1844143, 0.2783537], [0.2599441, -0.3190043, 0.2062185]])
>>> np.dot(hidden, nq)

matrix([[ 0.0939394, -0.1127858]])

使用沃尔夫勒姆,Python是正确的,但即使它没有收敛到算法的正确结果。我寻找这两种语言在这方面的不同之处,但一无所获。此外,我还使用了另一个矩阵乘法来测试,结果是相等的:

R语言:

代码语言:javascript
复制
> m1 <- matrix(c(2,3,4,7,0,1), nrow = 3, ncol=2)
> m2 <- matrix(c(1,6,4,3,6,9), nrow = 2, ncol=3)
> m1 %*% m2

     [,1] [,2] [,3]
[1,]   44   29   75
[2,]    3   12   18
[3,]   10   19   33

Python:

代码语言:javascript
复制
>>> import numpy as np
>>> m1 = np.matrix([[2,7], [3,0], [4,1]])
>>> m2 = np.matrix([[1,4,6], [6,3,9]])
>>> np.dot(m1,m2)

matrix([[44, 29, 75],
        [ 3, 12, 18],
        [10, 19, 33]])

这个案子有什么区别?我如何在Python中达到这个结果呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 06:39:31

我建议你打印你创建的矩阵:

代码语言:javascript
复制
#           [,1]      [,2]       [,3]
#[1,] -0.4442772 0.2783537 -0.3190043
#[2,] -0.1844143 0.2599441  0.2062185

这和你的Wolfram链接显示的不一样。

如果创建相同的矩阵,则得到与python和Mathematica相同的结果:

代码语言:javascript
复制
hidden <- matrix(c(-0.4442772, -0.1844143, 0.2783537, 0.2599441, -0.3190043, 0.2062185), nrow=2, ncol=3, 
            byrow = TRUE) #fill matrix by row instead of default by column 
#           [,1]       [,2]      [,3]
#[1,] -0.4442772 -0.1844143 0.2783537
#[2,]  0.2599441 -0.3190043 0.2062185
Xp <- c(0, 1, 1)
hidden %*% Xp
#           [,1]
#[1,]  0.0939394
#[2,] -0.1127858
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50637376

复制
相关文章

相似问题

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