Skip to content

Latest commit

 

History

History
74 lines (51 loc) · 1.97 KB

tutorial.Learner2D.rst

File metadata and controls

74 lines (51 loc) · 1.97 KB

Tutorial ~adaptive.Learner2D

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)