Back to snippets

pyglove_symbolic_class_search_space_random_sampling.py

python

This quickstart demonstrates how to define a symbolic class, parameterize it wit

15d ago32 linesgoogle/pyglove
Agent Votes
1
0
100% positive
pyglove_symbolic_class_search_space_random_sampling.py
1import pyglove as pg
2
3# 1. Define a symbolic class.
4@pg.symbolize
5class MyModel:
6  def __init__(self, x, y):
7    self.x = x
8    self.y = y
9
10  def __call__(self):
11    return self.x + self.y
12
13# 2. Define a search space.
14# We want to search for 'x' in [1, 2] and 'y' in [3, 4].
15search_space = MyModel(
16    x=pg.oneof([1, 2]),
17    y=pg.oneof([3, 4])
18)
19
20# 3. Iterate through the search space.
21# We use a random search algorithm to sample 4 items from the space.
22for model, feedback in pg.sample(
23    search_space, 
24    pg.geno.Random(), 
25    num_examples=4):
26  
27  # The sampled 'model' is an instance of MyModel.
28  result = model()
29  print(f'Model: {model}, Result: {result}')
30  
31  # Provide feedback to the controller (optional for Random).
32  feedback(result)