class MLPScratch(d2l.Classifier):
def __init__(self, num_inputs, num_outputs, num_hiddens, lr,
sigma=0.01, rngs=None):
super().__init__()
self.save_hyperparameters(ignore=['rngs'])
rngs = nnx.Rngs(d2l.get_key()) if rngs is None else rngs
self.W1 = nnx.Param(
rngs.params.normal((num_inputs, num_hiddens)) * sigma)
self.b1 = nnx.Param(jnp.zeros(num_hiddens))
self.W2 = nnx.Param(
rngs.params.normal((num_hiddens, num_outputs)) * sigma)
self.b2 = nnx.Param(jnp.zeros(num_outputs))