pymc3에서 다차원 변수를 사용하여 공통 요소를 공유하는 4 개의 변수로 구성된 시스템을 설명하려고합니다. 아마도 나는이 잘못을 생각하고있다. 그러나 모델을 설정할 때 pymc3에서 입력 치수 불일치에 대한 오류가 계속 발생한다. 나는 아무 소용이없는 몇 가지 변형을 시도했다. 공통된 관찰 변수를 공유하는 구조로 관찰 된 4 개의 변수로 구성된 시스템을 설명하기 위해 pymc3의 모양 인수를 어떻게 사용할 수 있습니까?Pymc3 다차원 변수 방정식
import pymc3
import numpy
# Simulate some data
shared_obs = numpy.random.normal(0., 0.25, 1000)
indiv_obs = numpy.random.normal(0.1, 0.5, 1000)
# Build a model
with pymc3.Model():
shared_mu = pymc3.Uniform('shared_mu', -0.5, 0.5)
shared_sigma = pymc3.Lognormal('shared_sigma', 0.1, 1.)
shared = pymc3.Normal('shared', mu=shared_mu, sd=shared_sigma, observed=shared_obs)
a = pymc3.Uniform('a', -1., 1., shape=4)
B = pymc3.Uniform('B', -1., 1., shape=4)
sigma = pymc3.Lognormal('sigma', 0.1, 1., shape=4)
indiv = pymc3.Normal('indiv', mu=a + B*shared, sd = sigma, observed=indiv_obs, shape=4)
ValueError Traceback (most recent call last) in() 6 B = pymc3.Uniform('B', -1., 1., shape=4) 7 sigma = pymc3.Lognormal('sigma', 0.1, 1., shape=4) ----> 8 indiv = pymc3.Normal('indiv', mu=a + B*shared, sd = sigma, observed=indiv_obs, shape=4)
C:\Program Files\Anaconda3\lib\site-packages\theano\tensor\var.py in mul(self, other) 160 # and the return value in that case 161 try: --> 162 return theano.tensor.mul(self, other) 163 except (NotImplementedError, AsTensorError): 164 return NotImplemented
C:\Program Files\Anaconda3\lib\site-packages\theano\gof\op.py in call(self, *inputs, **kwargs) 666 thunk.outputs = [storage_map[v] for v in node.outputs] 667 --> 668 required = thunk() 669 assert not required # We provided all inputs 670
C:\Program Files\Anaconda3\lib\site-packages\theano\gof\op.py in rval() 881 882 def rval(): --> 883 fill_storage() 884 for o in node.outputs: 885 compute_map[o][0] = True
C:\Program Files\Anaconda3\lib\site-packages\theano\gof\cc.py in call(self) 1705 print(self.error_storage, file=sys.stderr) 1706 raise -> 1707 reraise(exc_type, exc_value, exc_trace) 1708 1709
C:\Program Files\Anaconda3\lib\site-packages\six.py in reraise(tp, value, tb) 684 if value.traceback is not tb: 685 raise value.with_traceback(tb) --> 686 raise value 687 688 else:
ValueError: Input dimension mis-match. (input[0].shape[0] = 4, input[1].shape[0] = 1000)
*
왜 '공유'가 관측되는 변수입니까? 그것은 약간 이상합니다. 오류 메시지는 예상되는'B * shared'를 곱할 수 없다는 것을 알려줍니다. 'B'는 모양이 (4,)이고'공유 됨 '은 모양이'(1000,)'입니다. – aseyboldt
매트릭스 곱셈이 실제로 이해가 안된다는 것에 동의합니다. 그러나 나는 곱셈을 적절히 표현할 수 없다. 나는 (4,) ~ (4,1)을 생각하고 있었고, ".T"를 사용하여 두 변수 모두에 아무런 효과가 없다는 것을 실험했다. 나는 (1000,4) 또는 그 반대의 행렬에 가려고 노력 중이다. 어떻게해야합니까? – Ryan