Python PYMC3矩阵乘法

Python PYMC3 matrix multiplication

我开始学习PYMC3了。我正在尝试使用 PYMC3 编写一个简单的矩阵乘法。基本上想学习和了解PYMC3中的算术运算是如何进行的。

下面是我的代码,

import numpy as np
import pymc3 as pm 


dimension_N = 3
min = 0
max = 100

Matrix_A = np.random.randint(min,max,(dimension_N,dimension_N)).astype(np.uint8)
Matrix_B = np.random.randint(min,max,(dimension_N,dimension_N)).astype(np.uint8)
Matrix_C = np.zeros((dimension_N,dimension_N))

with pm.Model() as model:
    c = pm.Normal("c", mu=0, sigma=1)
    a = pm.Normal("a", mu=0, sigma=1, observed=Matrix_A)
    b = pm.Normal("b", mu=0, sigma=1, observed=Matrix_B)
    c = a.dot(b)

    gph = pm.fit()

不确定这是否是正确的代码。你能帮我么 ?从我的观察变量 c returns 0。你能告诉我哪里出了问题吗?

撇开这里的模型不明确,我们仍然可以回答在使用 PyMC3 RandomVariable 对象时应该如何进行矩阵乘法。也就是说,PyMC3 中的 RV 是 theano.tensor.TensorVaribale objects,因此,应该使用 theano.tensor.dot 方法对它们进行矩阵乘法。例如,

import theano.tensor as tt

tt.dot(a,b)

一般来说,请参考 the Theano Tensor Functionality documentation API 以使用 PyMC3 进行有效的数学运算。