Note
Because this documentation consists of static html, the live_plot
and live_info
widget is not live. Download the notebook in order to see the real behaviour.
The complete source code of this tutorial can be found in :jupyter-downloadtutorial.Learner2D
import adaptive adaptive.notebook_extension()
import numpy as np from functools import partial
Besides 1D functions, we can also learn 2D functions: f : ℝ2 → ℝ.
- def ring(xy, wait=True):
import numpy as np from time import sleep from random import random if wait: sleep(random()/10) x, y = xy a = 0.2 return x + np.exp(-(x*2 + y2 - 0.752)2/a*4)
learner = adaptive.Learner2D(ring, bounds=[(-1, 1), (-1, 1)])
runner = adaptive.Runner(learner, goal=lambda l: l.loss() < 0.01)
await runner.task # This is not needed in a notebook environment!
runner.live_info()
- def plot(learner):
plot = learner.plot(tri_alpha=0.2) return (plot.Image + plot.EdgePaths.I + plot).cols(2)
runner.live_plot(plotter=plot, update_interval=0.1)
%%opts EdgePaths (color='w')
import itertools
# Create a learner and add data on homogeneous grid, so that we can plot it learner2 = adaptive.Learner2D(ring, bounds=learner.bounds) n = int(learner.npoints*0.5) xs, ys = [np.linspace(bounds, n) for bounds in learner.bounds] xys = list(itertools.product(xs, ys)) learner2.tell_many(xys, map(partial(ring, wait=False), xys))
- (learner2.plot(n).relabel('Homogeneous grid') + learner.plot().relabel('With adaptive') +
learner2.plot(n, tri_alpha=0.4) + learner.plot(tri_alpha=0.4)).cols(2)