Remove weight reset in update()
As noted in Github #245, this should only happen after resampling, and the resample functions already perform this computation.
This commit is contained in:
1 parent
b59c2c3698
commit
eb5f7e1b17
1 file changed
+6
-8
@@ -111,7 +111,7 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 900x400 with 2 Axes>"
|
||||
]
|
||||
@@ -524,7 +524,6 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def update(particles, weights, z, R, landmarks):\n",
|
||||
" weights.fill(1.)\n",
|
||||
" for i, landmark in enumerate(landmarks):\n",
|
||||
" distance = np.linalg.norm(particles[:, 0:2] - landmark, axis=1)\n",
|
||||
" weights *= scipy.stats.norm(distance, R).pdf(z[i])\n",
|
||||
@@ -679,7 +678,7 @@
|
||||
"def resample_from_index(particles, weights, indexes):\n",
|
||||
" particles[:] = particles[indexes]\n",
|
||||
" weights[:] = weights[indexes]\n",
|
||||
" weights.fill (1.0 / len(weights))"
|
||||
" weights.fill(1.0 / len(weights))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -736,7 +735,7 @@
|
||||
" mean=initial_x, std=(5, 5, np.pi/4), N=N)\n",
|
||||
" else:\n",
|
||||
" particles = create_uniform_particles((0,20), (0,20), (0, 6.28), N)\n",
|
||||
" weights = np.zeros(N)\n",
|
||||
" weights = np.ones(N) / N\n",
|
||||
"\n",
|
||||
" if plot_particles:\n",
|
||||
" alpha = .20\n",
|
||||
@@ -765,7 +764,7 @@
|
||||
" if neff(weights) < N/2:\n",
|
||||
" indexes = systematic_resample(weights)\n",
|
||||
" resample_from_index(particles, weights, indexes)\n",
|
||||
"\n",
|
||||
" assert np.allclose(weights, 1/N)\n",
|
||||
" mu, var = estimate(particles, weights)\n",
|
||||
" xs.append(mu)\n",
|
||||
"\n",
|
||||
@@ -1049,7 +1048,6 @@
|
||||
"\n",
|
||||
"```python\n",
|
||||
"def update(particles, weights, z, R, landmarks):\n",
|
||||
" weights.fill(1.)\n",
|
||||
" for i, landmark in enumerate(landmarks):\n",
|
||||
" dist = np.linalg.norm(particles[:, 0:2] - landmark, axis=1)\n",
|
||||
" weights *= scipy.stats.norm(dist, R).pdf(z[i])\n",
|
||||
@@ -1057,8 +1055,8 @@
|
||||
" weights += 1.e-300 # avoid round-off to zero\n",
|
||||
" weights /= sum(weights) # normalize\n",
|
||||
"```\n",
|
||||
" \n",
|
||||
"The reason for `self.weights.fill(1.)` might have confused you. In all the Bayesian filters up to this chapter we started with the probability distribution created by the `predict` step, and this appears to discard that information by setting all of the weights to 1. Well, we are discarding the weights, but we do not discard the particles. That is a direct result of applying importance sampling - we draw from the known distribution, but weight by the unknown distribution. In this case our known distribution is the uniform distribution - all are weighted equally.\n",
|
||||
" \n",
|
||||
"Here we compute the weight as the based on the Bayesian computation $\\| \\text{likelihood} \\times \\text{prior}\\|$\n",
|
||||
"\n",
|
||||
"Of course if you can compute the posterior probability distribution from the prior you should do so. If you cannot, then importance sampling gives you a way to solve this problem. In practice, computing the posterior is incredibly difficult. The Kalman filter became a spectacular success because it took advantage of the properties of Gaussians to find an analytic solution. Once we relax the conditions required by the Kalman filter (Markov property, Gaussian measurements and process) importance sampling and monte carlo methods make the problem tractable."
|
||||
]
|
||||
|
||||
Reference in new issue
Block a user