facebook / facebook/prophet

mcmc_samples > 0 cause ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0

Open
#2,281 2 comments 4 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
20.4k
Forks
4.6k
Avg merge
19h 52m
Merged PRs (30d)
1

Description

Some error while try to use mcmc sampling parameter not equal to zero
prophet==1.1.1

```
import pandas as pd
from prophet import Prophet

data = [
{"ds": "2022-08-30", "y": 3.0},
{"ds": "2022-08-16", "y": 3.0},
{"ds": "2022-08-02", "y": 3.0},
{"ds": "2022-07-19", "y": 3.0},
{"ds": "2022-07-05", "y": 2.0},
{"ds": "2022-06-21", "y": 2.0},
{"ds": "2022-06-07", "y": 2.0},
{"ds": "2022-05-23", "y": 2.0},
{"ds": "2022-05-05", "y": 2.0},
{"ds": "2022-04-21", "y": 2.0},
{"ds": "2022-04-07", "y": 2.0},
{"ds": "2022-03-24", "y": 2.0},
{"ds": "2022-03-10", "y": 2.0},
{"ds": "2022-02-24", "y": 2.0},
{"ds": "2022-02-10", "y": 2.0},
{"ds": "2022-01-26", "y": 2.0},
{"ds": "2022-01-12", "y": 7.0},
{"ds": "2021-12-28", "y": 7.0},
{"ds": "2021-12-14", "y": 7.0},
{"ds": "2021-11-29", "y": 7.0},
{"ds": "2021-11-12", "y": 7.0},
{"ds": "2021-10-29", "y": 6.0},
{"ds": "2021-10-13", "y": 5.0},
{"ds": "2021-09-29", "y": 5.0}
]

df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['ds'])

print(df)

target = float(df.loc[df.index[0]]['y'])
df = df.loc[df.index[1:]]

m = Prophet(mcmc_samples=1000) # with mcmc_samples=0 works fine
m.fit(df)

future = m.make_future_dataframe(periods=14)
print('future', future, sep='\n')

forecast = m.predict(future)

print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])
```

Here is the full output

```
INFO:prophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.
INFO:prophet:Disabling weekly seasonality. Run prophet with weekly_seasonality=True to override this.
INFO:prophet:Disabling daily seasonality. Run prophet with daily_seasonality=True to override this.
INFO:prophet:n_changepoints greater than number of observations. Using 17.
DEBUG:cmdstanpy:input tempfile: /tmp/tmpswmsreqz/857g2udc.json
DEBUG:cmdstanpy:input tempfile: /tmp/tmpswmsreqz/wwkwqfc0.json
DEBUG:cmdstanpy:cmd: /usr/local/lib/python3.7/dist-packages/prophet/stan_model/prophet_model.bin info
cwd: None
DEBUG:cmdstanpy:Command ['/usr/local/lib/python3.7/dist-packages/prophet/stan_model/prophet_model.bin', 'info']
error during processing Machine is not on the network
08:31:41 - cmdstanpy - INFO - CmdStan installation /usr/local/lib/python3.7/dist-packages/prophet/stan_model/cmdstan-2.26.1 missing makefile, cannot get version.
INFO:cmdstanpy:CmdStan installation /usr/local/lib/python3.7/dist-packages/prophet/stan_model/cmdstan-2.26.1 missing makefile, cannot get version.
08:31:41 - cmdstanpy - INFO - Cannot determine whether version is before 2.28.
INFO:cmdstanpy:Cannot determine whether version is before 2.28.
08:31:41 - cmdstanpy - INFO - CmdStan start processing
INFO:cmdstanpy:CmdStan start processing
ds y
0 2022-08-30 3.0
1 2022-08-16 3.0
2 2022-08-02 3.0
3 2022-07-19 3.0
4 2022-07-05 2.0
5 2022-06-21 2.0
6 2022-06-07 2.0
7 2022-05-23 2.0
8 2022-05-05 2.0
9 2022-04-21 2.0
10 2022-04-07 2.0
11 2022-03-24 2.0
12 2022-03-10 2.0
13 2022-02-24 2.0
14 2022-02-10 2.0
15 2022-01-26 2.0
16 2022-01-12 7.0
17 2021-12-28 7.0
18 2021-12-14 7.0
19 2021-11-29 7.0
20 2021-11-12 7.0
21 2021-10-29 6.0
22 2021-10-13 5.0
23 2021-09-29 5.0
chain 1
00:02 Sampling completed
chain 2
00:02 Sampling completed
chain 3
00:01 Sampling completed
chain 4
00:01 Sampling completed
DEBUG:cmdstanpy:idx 0
DEBUG:cmdstanpy:running CmdStan, num_threads: 1
DEBUG:cmdstanpy:CmdStan args: ['/usr/local/lib/python3.7/dist-packages/prophet/stan_model/prophet_model.bin', 'id=1', 'random', 'seed=11862', 'data', 'file=/tmp/tmpswmsreqz/857g2udc.json', 'init=/tmp/tmpswmsreqz/wwkwqfc0.json', 'output', 'file=/tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_1.csv', 'method=sample', 'num_samples=500', 'num_warmup=500', 'algorithm=hmc', 'adapt', 'engaged=1']
DEBUG:cmdstanpy:idx 1
DEBUG:cmdstanpy:running CmdStan, num_threads: 1
DEBUG:cmdstanpy:CmdStan args: ['/usr/local/lib/python3.7/dist-packages/prophet/stan_model/prophet_model.bin', 'id=2', 'random', 'seed=11862', 'data', 'file=/tmp/tmpswmsreqz/857g2udc.json', 'init=/tmp/tmpswmsreqz/wwkwqfc0.json', 'output', 'file=/tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_2.csv', 'method=sample', 'num_samples=500', 'num_warmup=500', 'algorithm=hmc', 'adapt', 'engaged=1']
DEBUG:cmdstanpy:idx 2
DEBUG:cmdstanpy:running CmdStan, num_threads: 1
DEBUG:cmdstanpy:CmdStan args: ['/usr/local/lib/python3.7/dist-packages/prophet/stan_model/prophet_model.bin', 'id=3', 'random', 'seed=11862', 'data', 'file=/tmp/tmpswmsreqz/857g2udc.json', 'init=/tmp/tmpswmsreqz/wwkwqfc0.json', 'output', 'file=/tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_3.csv', 'method=sample', 'num_samples=500', 'num_warmup=500', 'algorithm=hmc', 'adapt', 'engaged=1']
DEBUG:cmdstanpy:idx 3
DEBUG:cmdstanpy:running CmdStan, num_threads: 1
DEBUG:cmdstanpy:CmdStan args: ['/usr/local/lib/python3.7/dist-packages/prophet/stan_model/prophet_model.bin', 'id=4', 'random', 'seed=11862', 'data', 'file=/tmp/tmpswmsreqz/857g2udc.json', 'init=/tmp/tmpswmsreqz/wwkwqfc0.json', 'output', 'file=/tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_4.csv', 'method=sample', 'num_samples=500', 'num_warmup=500', 'algorithm=hmc', 'adapt', 'engaged=1']
08:31:43 - cmdstanpy - INFO - CmdStan done processing.
INFO:cmdstanpy:CmdStan done processing.
DEBUG:cmdstanpy:runset
RunSet: chains=4, chain_ids=[1, 2, 3, 4], num_processes=4
cmd (chain 1):
['/usr/local/lib/python3.7/dist-packages/prophet/stan_model/prophet_model.bin', 'id=1', 'random', 'seed=11862', 'data', 'file=/tmp/tmpswmsreqz/857g2udc.json', 'init=/tmp/tmpswmsreqz/wwkwqfc0.json', 'output', 'file=/tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_1.csv', 'method=sample', 'num_samples=500', 'num_warmup=500', 'algorithm=hmc', 'adapt', 'engaged=1']
retcodes=[0, 0, 0, 0]
per-chain output files (showing chain 1 only):
csv_file:
/tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_1.csv
console_msgs (if any):
/tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_0-stdout.txt
DEBUG:cmdstanpy:Chain 1 console:
method = sample (Default)
sample
num_samples = 500
num_warmup = 500
save_warmup = 0 (Default)
thin = 1 (Default)
adapt
engaged = 1 (Default)
gamma = 0.050000000000000003 (Default)
delta = 0.80000000000000004 (Default)
kappa = 0.75 (Default)
t0 = 10 (Default)
init_buffer = 75 (Default)
term_buffer = 50 (Default)
window = 25 (Default)
algorithm = hmc (Default)
hmc
engine = nuts (Default)
nuts
max_depth = 10 (Default)
metric = diag_e (Default)
metric_file = (Default)
stepsize = 1 (Default)
stepsize_jitter = 0 (Default)
id = 1
data
file = /tmp/tmpswmsreqz/857g2udc.json
init = /tmp/tmpswmsreqz/wwkwqfc0.json
random
seed = 11862
output
file = /tmp/tmpswmsreqz/prophet_model_jnqzlee/prophet_model-20221012083141_1.csv
diagnostic_file = (Default)
refresh = 100 (Default)
sig_figs = -1 (Default)
profile_file = profile.csv (Default)

Gradient evaluation took 0.001375 seconds
1000 transitions using 10 leapfrog steps per transition would take 13.75 seconds.
Adjust your expectations accordingly!

Iteration: 1 / 1000 [ 0%] (Warmup)
Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:
Exception: normal_id_glm_lpdf: Scale vector is 0, but must be positive finite! (in '/project/python/stan/prophet.stan', line 137, column 2 to line 142, column 4)
If this warning occurs sporadically, such as for highly constrained variable types like covariance matrices, then the sampler is fine,
but if this warning occurs often then your model may be either severely ill-conditioned or misspecified.

Iteration: 100 / 1000 [ 10%] (Warmup)
Iteration: 200 / 1000 [ 20%] (Warmup)
Iteration: 300 / 1000 [ 30%] (Warmup)
Iteration: 400 / 1000 [ 40%] (Warmup)
Iteration: 500 / 1000 [ 50%] (Warmup)
Iteration: 501 / 1000 [ 50%] (Sampling)
Iteration: 600 / 1000 [ 60%] (Sampling)
Iteration: 700 / 1000 [ 70%] (Sampling)
Iteration: 800 / 1000 [ 80%] (Sampling)
Iteration: 900 / 1000 [ 90%] (Sampling)
Iteration: 1000 / 1000 [100%] (Sampling)

Elapsed Time: 0.48 seconds (Warm-up)
0.315 seconds (Sampling)
0.795 seconds (Total)

08:31:43 - cmdstanpy - WARNING - Non-fatal error during sampling:
Exception: normal_id_glm_lpdf: Scale vector is 0, but must be positive finite! (in '/project/python/stan/prophet.stan', line 137, column 2 to line 142, column 4)
Exception: normal_id_glm_lpdf: Scale vector is inf, but must be positive finite! (in '/project/python/stan/prophet.stan', line 137, column 2 to line 142, column 4)
Exception: normal_id_glm_lpdf: Scale vector is 0, but must be positive finite! (in '/project/python/stan/prophet.stan', line 137, column 2 to line 142, column 4)
Consider re-running with show_console=True if the above output is unclear!
WARNING:cmdstanpy:Non-fatal error during sampling:
Exception: normal_id_glm_lpdf: Scale vector is 0, but must be positive finite! (in '/project/python/stan/prophet.stan', line 137, column 2 to line 142, column 4)
Exception: normal_id_glm_lpdf: Scale vector is inf, but must be positive finite! (in '/project/python/stan/prophet.stan', line 137, column 2 to line 142, column 4)
Exception: normal_id_glm_lpdf: Scale vector is 0, but must be positive finite! (in '/project/python/stan/prophet.stan', line 137, column 2 to line 142, column 4)
Consider re-running with show_console=True if the above output is unclear!

future
ds
0 2021-09-29
1 2021-10-13
2 2021-10-29
3 2021-11-12
4 2021-11-29
5 2021-12-14
6 2021-12-28
7 2022-01-12
8 2022-01-26
9 2022-02-10
10 2022-02-24
11 2022-03-10
12 2022-03-24
13 2022-04-07
14 2022-04-21
15 2022-05-05
16 2022-05-23
17 2022-06-07
18 2022-06-21
19 2022-07-05
20 2022-07-19
21 2022-08-02
22 2022-08-16
23 2022-08-17
24 2022-08-18
25 2022-08-19
26 2022-08-20
27 2022-08-21
28 2022-08-22
29 2022-08-23
30 2022-08-24
31 2022-08-25
32 2022-08-26
33 2022-08-27
34 2022-08-28
35 2022-08-29
36 2022-08-30
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
[](https://localhost:8080/#) in
43 print('future', future, sep='\n')
44
---> 45 forecast = m.predict(future)
46
47 print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])

1 frames
[/usr/local/lib/python3.7/dist-packages/prophet/forecaster.py](https://localhost:8080/#) in predict_seasonal_components(self, df)
1355 beta_c = self.params['beta'] * component_cols[component].values
1356
-> 1357 comp = np.matmul(X, beta_c.transpose())
1358 if component in self.component_modes['additive']:
1359 comp *= self.y_scale

ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2000 is different from 1)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.