@@ -43,9 +43,10 @@ The API of `minimc` is mimicked in `minimc.minimc_slow`, which returns trajector
43
43
``` python
44
44
import autograd.numpy as np
45
45
from minimc import neg_log_normal, hamiltonian_monte_carlo
46
+ from minimc.autograd_interface import AutogradPotential
46
47
47
- samples = hamiltonian_monte_carlo( 2_000 , neg_log_normal(0 , 0.1 ),
48
- initial_position = 0 .)
48
+ neg_log_p = AutogradPotential( neg_log_normal(0 , 0.1 ))
49
+ samples = hamiltonian_monte_carlo( 2_000 , neg_log_p, initial_position = 0 .)
49
50
50
51
100 % | ███████████████████████████████████████████| 2500 / 2500 [00 :04 < 00 :00 , 615. 91it / s]
51
52
```
@@ -55,9 +56,9 @@ samples = hamiltonian_monte_carlo(2_000, neg_log_normal(0, 0.1),
55
56
``` python
56
57
from minimc.minimc_slow import hamiltonian_monte_carlo as hmc_slow
57
58
58
- samples, positions, momentums, accepted = hmc_slow(50 , neg_log_normal( 0 , 0.1 ) ,
59
- initial_position = 0 .,
60
- step_size = 0.01 )
59
+ samples, positions, momentums, accepted, p_accepts = hmc_slow(50 , neg_log_p ,
60
+ initial_position = 0 .,
61
+ step_size = 0.01 )
61
62
62
63
100 % | ███████████████████████████████████████████| 50 / 50 [00 :00 < 00 :00 , 52. 72it / s]
63
64
```
@@ -68,7 +69,7 @@ from minimc import neg_log_mvnormal
68
69
69
70
mu = np.zeros(2 )
70
71
cov = np.array([[1.0 , 0.8 ], [0.8 , 1.0 ]])
71
- neg_log_p = neg_log_mvnormal(mu, cov)
72
+ neg_log_p = AutogradPotential( neg_log_mvnormal(mu, cov) )
72
73
73
74
samples = hamiltonian_monte_carlo(1000 , neg_log_p, np.zeros(2 ))
74
75
@@ -78,9 +79,10 @@ samples = hamiltonian_monte_carlo(1000, neg_log_p, np.zeros(2))
78
79
<img src =" examples/plot3.png " width =" 400 " >
79
80
80
81
``` python
81
- samples, positions, momentums, accepted = hmc_slow(10 , neg_log_p, np.zeros(2 ),
82
- path_len = 4 ,
83
- step_size = 0.01 )
82
+ samples, positions, momentums, accepted, p_accepts = hmc_slow(10 , neg_log_p,
83
+ np.zeros(2 ),
84
+ path_len = 4 ,
85
+ step_size = 0.01 )
84
86
85
87
100 % | ███████████████████████████████████████████| 10 / 10 [00 :01 < 00 :00 , 9. 06it / s]
86
88
```
@@ -92,7 +94,7 @@ from minimc import mixture
92
94
93
95
neg_log_probs = [neg_log_normal(1.0 , 0.5 ), neg_log_normal(- 1.0 , 0.5 )]
94
96
probs = np.array([0.2 , 0.8 ])
95
- neg_log_p = mixture(neg_log_probs, probs)
97
+ neg_log_p = AutogradPotential( mixture(neg_log_probs, probs) )
96
98
samples = hamiltonian_monte_carlo(2000 , neg_log_p, 0.0 )
97
99
98
100
neg_log_probs = [
@@ -101,7 +103,7 @@ neg_log_probs = [
101
103
neg_log_normal(1.0 , 0.3 ),
102
104
]
103
105
probs = np.array([0.1 , 0.5 , 0.4 ])
104
- neg_log_p = mixture(neg_log_probs, probs)
106
+ neg_log_p = AutogradPotential( mixture(neg_log_probs, probs) )
105
107
samples = hamiltonian_monte_carlo(2_000 , neg_log_p, 0 .)
106
108
107
109
100 % | ███████████████████████████████████████████| 2000 / 2000 [00 :09 < 00 :00 , 261. 17it / s]
@@ -110,7 +112,9 @@ samples = hamiltonian_monte_carlo(2_000, neg_log_p, 0.)
110
112
<img src =" examples/plot5.png " width =" 400 " >
111
113
112
114
``` python
113
- samples, positions, momentums, accepted = hmc_slow(100 , neg_log_p, 0.0 , step_size = 0.01 )
115
+ samples, positions, momentums, accepted, p_accepts = hmc_slow(100 , neg_log_p,
116
+ 0.0 ,
117
+ step_size = 0.01 )
114
118
115
119
100 % | ███████████████████████████████████████████| 100 / 100 [00 :07 < 00 :00 , 14. 04it / s]
116
120
```
@@ -128,14 +132,14 @@ cov2 = 0.2 * np.array([[1.0, -0.6],
128
132
mu3 = np.array([- 1.0 , 2.0 ])
129
133
cov3 = 0.3 * np.eye(2 )
130
134
131
- neg_log_p = mixture(
135
+ neg_log_p = AutogradPotential( mixture(
132
136
[
133
137
neg_log_mvnormal(mu1, cov1),
134
138
neg_log_mvnormal(mu2, cov2),
135
139
neg_log_mvnormal(mu3, cov3),
136
140
],
137
141
[0.3 , 0.3 , 0.4 ],
138
- )
142
+ ))
139
143
140
144
samples = hamiltonian_monte_carlo(2000 , neg_log_p, np.zeros(2 ))
141
145
@@ -145,9 +149,10 @@ samples = hamiltonian_monte_carlo(2000, neg_log_p, np.zeros(2))
145
149
<img src =" examples/plot7.png " width =" 400 " >
146
150
147
151
``` python
148
- samples, positions, momentums, accepted = hmc_slow(20 , neg_log_p, np.zeros(2 ),
149
- path_len = 3 ,
150
- step_size = 0.01 )
152
+ samples, positions, momentums, accepted, p_accepts = hmc_slow(20 , neg_log_p,
153
+ np.zeros(2 ),
154
+ path_len = 3 ,
155
+ step_size = 0.01 )
151
156
152
157
100 % | ███████████████████████████████████████████| 20 / 20 [00 :08 < 00 :00 , 2. 31it / s]
153
158
```
0 commit comments