Exemple #1
0
 def f(x):
     m = CountingModule(op=lambda x: x + 1)
     if not base.params_frozen():
         return m(x)
     else:
         stateful.while_loop(lambda _: base.next_rng_key(), lambda x: x,
                             x)
Exemple #2
0
 def f(x):
     m = CountingModule(op=lambda x: x + 1)
     if not base.params_frozen():
         return m(x)
     else:
         _, y = stateful.while_loop(lambda a: a[0] < iters, lambda a:
                                    (a[0] + 1, m(a[1])), (0, x))
         return y
Exemple #3
0
 def f():
   stateful.while_loop(lambda x: x.all(), lambda x: not x, 1)
Exemple #4
0
    ("vmap", lambda f: stateful.vmap(f, split_rng=False)),

    # Control flow.
    # TODO(tomhennigan): Enable for associative_scan.
    # ("associative_scan", lambda f:
    #  (lambda x: jax.lax.associative_scan(f, x))),
    ("cond", lambda f: (lambda x: stateful.cond(True, f, f, x))),
    ("fori_loop", lambda f:
     (lambda x: stateful.fori_loop(0, 1, base_test.ignore_index(f), x))),
    # ("map", lambda f: (lambda x: stateful.map(f, x))),
    ("scan", lambda f:
     (lambda x: stateful.scan(base_test.identity_carry(f), None, x))),
    ("switch", lambda f: (lambda x: stateful.switch(0, [f, f], x))),
    ("while_loop", lambda f: toggle(
        f, lambda x: stateful.while_loop(lambda xs: xs[0] == 0,
                                         lambda xs: (1, f(xs[1])),
                                         (0, x)))),

    # Automatic differentiation.
    # TODO(tomhennigan): Add missing features (e.g. custom_vjp, custom_jvp).

    ("grad", lambda f: stateful.grad(lambda x: f(x).sum())),
    ("value_and_grad", lambda f: stateful.value_and_grad(lambda x: f(x).sum())),
    ("checkpoint", stateful.remat),
)
# pylint: enable=g-long-lambda


class StatefulTest(parameterized.TestCase):

  @test_utils.transform_and_run