Ejemplo n.º 1
0
def hanoi(disks=7,
          towers=4,
          num_examples=6500,
          N=None,
          num_actions=None,
          direct=None,
          stop_gradient=False,
          aeclass="ConvolutionalGumbelAE",
          comment=""):
    for name, value in locals().items():
        if value is not None:
            parameters[name] = [value]
    default_parameters["aeclass"] = aeclass

    import latplan.puzzles.hanoi as p
    p.setup()
    path = os.path.join(latplan.__path__[0], "puzzles",
                        "-".join(map(str, ["hanoi", disks, towers])) + ".npz")
    with np.load(path) as data:
        pre_configs = data['pres'][:num_examples]
        suc_configs = data['sucs'][:num_examples]
    pres = p.generate(pre_configs, disks, towers)
    sucs = p.generate(suc_configs, disks, towers)
    transitions = np.array([pres, sucs])
    states = np.concatenate((transitions[0], transitions[1]), axis=0)
    data = np.swapaxes(transitions, 0, 1)
    print(data.shape)
    train = data[:int(len(data) * 0.9)]
    val = data[int(len(data) * 0.9):int(len(data) * 0.95)]
    test = data[int(len(data) * 0.95):]
    ae = run(os.path.join("samples", sae_path), train, val, parameters)
    show_summary(ae, train, test)
    plot_autoencoding_image(ae, test, train)
    dump_actions(ae, transitions)
    dump_states(ae, states)
Ejemplo n.º 2
0
def lightsout(type='digital',
              size=4,
              num_examples=6500,
              N=None,
              num_actions=None,
              direct=None,
              stop_gradient=False,
              aeclass="ConvolutionalGumbelAE",
              comment="",
              prob_vis=1.00):
    for name, value in locals().items():
        if value is not None:
            parameters[name] = [value]
    default_parameters["aeclass"] = aeclass

    import importlib
    p = importlib.import_module('latplan.puzzles.lightsout_{}'.format(type))
    p.setup()
    path = os.path.join(latplan.__path__[0], "puzzles",
                        "-".join(map(str, ["lightsout", type, size])) + ".npz")
    with np.load(path) as data:
        pre_configs = data['pres'][:num_examples]
        suc_configs = data['sucs'][:num_examples]
    # TWK: Wrap custom `add_missingness()` method around the data generators
    pres = add_missingness(p.generate(pre_configs), prob_vis)
    sucs = add_missingness(p.generate(suc_configs), prob_vis)
    transitions = np.array([pres, sucs])
    states = np.concatenate((transitions[0], transitions[1]), axis=0)
    data = np.swapaxes(transitions, 0, 1)
    print(data.shape)
    train = data[:int(len(data) * 0.9)]
    val = data[int(len(data) * 0.9):int(len(data) * 0.95)]
    test = data[int(len(data) * 0.95):]
    ae = run(os.path.join("samples", sae_path), train, val, parameters)
    show_summary(ae, train, test)
    plot_autoencoding_image(ae, test, train)
    dump_actions(ae, transitions)
    dump_states(ae, states)
Ejemplo n.º 3
0
import latplan
import latplan.puzzles.hanoi as p

# importlib.reload(p)

import itertools
c = [c for c in itertools.islice(p.generate_configs(4, 3), 10000)]

from functools import partial

from latplan.util.timer import Timer

with Timer(
        "************************* states on cpu ***************************"):
    s = p.generate(c, 4, 3)

print(s[:3])

with Timer(
        "************************* validate_states ***************************"
):
    print("results:", np.all(p.validate_states(s)), "(should be True)")

with Timer(
        "************************* validate_states with noise ***************************"
):
    print(
        "results:",
        np.all(
            p.validate_states(
Ejemplo n.º 4
0
#!/usr/bin/env python3

import numpy as np
import sys
sys.path.append('../../')

from latplan.puzzles.hanoi import generate_configs, successors, generate, states, transitions

from plot import plot_image, plot_grid

disks = 8
towers = 3

configs = generate_configs(disks, towers)
puzzles = generate(configs, disks, towers)
print(puzzles.shape)
print(puzzles[10])

for line in puzzles[10]:
    print(line)

plot_image(puzzles[0], "hanoi.png")
plot_image(
    np.clip(puzzles[0] + np.random.normal(0, 0.1, puzzles[0].shape), 0, 1),
    "hanoi+noise.png")
plot_image(
    np.round(
        np.clip(puzzles[0] + np.random.normal(0, 0.1, puzzles[0].shape), 0,
                1)), "hanoi+noise+round.png")
plot_grid(puzzles[:36], "hanois.png")
_transitions = transitions(disks, towers)