How to Use ENAS/ProxylessNAS in Ten Minutes

What is the Key Idea of ENAS and ProxylessNAS?

Traditional reinforcement learning-based neural architecture search learns an architecture controller by iteratively sampling the architecture and training the model to get final reward to update the controller. It is extremely expensive process due to training CNN.

https://raw.githubusercontent.com/zhanghang1989/AutoGluonWebdata/master/docs/tutorial/proxyless.png

Fig. 3 ProxylessNAS

Recent work of ENAS and ProxylessNAS construct an over-parameterized network (supernet) and share the weights across different architecture to speed up the search speed. The reward is calculated every few iterations instead of every training period.

Import MXNet and AutoGluon:

import autogluon.core as ag
import mxnet as mx
import mxnet.gluon.nn as nn

How to Construct a SuperNet

Basic NN blocks for CNN.

class Identity(mx.gluon.HybridBlock):
    def hybrid_forward(self, F, x):
        return x

class ConvBNReLU(mx.gluon.HybridBlock):
    def __init__(self, in_channels, channels, kernel, stride):
        super().__init__()
        padding = (kernel - 1) // 2
        self.conv = nn.Conv2D(channels, kernel, stride, padding, in_channels=in_channels)
        self.bn = nn.BatchNorm(in_channels=channels)
        self.relu = nn.Activation('relu')
    def hybrid_forward(self, F, x):
        return self.relu(self.bn(self.conv(x)))

AutoGluon ENAS Unit

from autogluon.extra.contrib.enas import *

@enas_unit()
class ResUnit(mx.gluon.HybridBlock):
    def __init__(self, in_channels, channels, hidden_channels, kernel, stride):
        super().__init__()
        self.conv1 = ConvBNReLU(in_channels, hidden_channels, kernel, stride)
        self.conv2 = ConvBNReLU(hidden_channels, channels, kernel, 1)
        if in_channels == channels and stride == 1:
            self.shortcut = Identity()
        else:
            self.shortcut = nn.Conv2D(channels, 1, stride, in_channels=in_channels)
    def hybrid_forward(self, F, x):
        return self.conv2(self.conv1(x)) + self.shortcut(x)
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/gluoncv/__init__.py:40: UserWarning: Both mxnet==1.7.0 and torch==1.9.1+cu102 are installed. You might encounter increased GPU memory footprint if both framework are used at the same time.
  warnings.warn(f'Both mxnet=={mx.__version__} and torch=={torch.__version__} are installed. '

AutoGluon Sequntial

Creating a ENAS network using Sequential Block:

mynet = ENAS_Sequential(
    ResUnit(1, 8, hidden_channels=ag.space.Categorical(4, 8), kernel=ag.space.Categorical(3, 5), stride=2),
    ResUnit(8, 8, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=2),
    ResUnit(8, 16, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=2),
    ResUnit(16, 16, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=1, with_zero=True),
    ResUnit(16, 16, hidden_channels=8, kernel=ag.space.Categorical(3, 5), stride=1, with_zero=True),
    nn.GlobalAvgPool2D(),
    nn.Flatten(),
    nn.Activation('relu'),
    nn.Dense(10, in_units=16),
)

mynet.initialize()

#mynet.graph
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/mxnet/gluon/block.py:656: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  self.collect_params().initialize(init, ctx, verbose, force_reinit)

Evaluate Network Latency and Define Reward Function

x = mx.nd.random.uniform(shape=(1, 1, 28, 28))
y = mynet.evaluate_latency(x)

Show the latencies:

print('Average latency is {:.2f} ms, latency of the current architecture is {:.2f} ms'.format(mynet.avg_latency, mynet.latency))
Average latency is 4.59 ms, latency of the current architecture is 5.15 ms

We also provide number of params

mynet.nparams
8714

Define the reward function:

reward_fn = lambda metric, net: metric * ((net.avg_latency / net.latency) ** 0.1)

Start the Training

Construct experiment scheduler, which automatically creates an RL controller based on user-defined search space.

scheduler = ENAS_Scheduler(mynet, train_set='mnist',
                           reward_fn=reward_fn, batch_size=128, num_gpus=1,
                           warmup_epochs=0, epochs=1, controller_lr=3e-3,
                           plot_frequency=10, update_arch_frequency=5)
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/extra/src/autogluon/extra/contrib/enas/enas_scheduler.py:78: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  self.supernet.collect_params().reset_ctx(ctx)
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/extra/src/autogluon/extra/contrib/enas/enas_utils.py:15: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  train_args['trainer'] = gluon.Trainer(net.collect_params(), 'sgd', optimizer_params)

Start the training:

scheduler.run()
  0%|          | 0/1 [00:00<?, ?it/s]
  0%|          | 0/468 [00:00<?, ?it/s]/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/mxnet/gluon/block.py:926: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  params = self.collect_params()
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/mxnet/gluon/block.py:682: UserWarning: Parameter batchnorm3_running_var, batchnorm6_running_var, batchnorm19_running_var, batchnorm3_gamma, conv19_weight, batchnorm12_beta, batchnorm13_gamma, conv0_bias, batchnorm18_beta, batchnorm2_running_var, batchnorm20_running_mean, conv13_weight, conv27_weight, conv12_bias, batchnorm6_beta, conv19_bias, conv14_weight, batchnorm18_running_var, conv9_weight, batchnorm21_gamma, conv26_bias, conv29_bias, conv11_bias, batchnorm9_running_var, conv3_weight, batchnorm9_running_mean, batchnorm1_running_mean, conv3_bias, conv25_bias, batchnorm13_running_var, conv20_weight, batchnorm19_gamma, batchnorm16_running_var, conv9_bias, batchnorm7_gamma, conv2_bias, conv1_bias, batchnorm0_running_var, batchnorm1_running_var, batchnorm2_running_mean, batchnorm7_beta, batchnorm6_gamma, conv13_bias, batchnorm12_gamma, batchnorm18_running_mean, batchnorm3_running_mean, batchnorm8_beta, batchnorm0_beta, batchnorm20_gamma, conv12_weight, conv1_weight, conv24_weight, conv11_weight, batchnorm13_running_mean, batchnorm17_gamma, batchnorm6_running_mean, conv20_bias, batchnorm12_running_var, batchnorm8_running_mean, batchnorm20_beta, conv10_bias, batchnorm21_beta, batchnorm8_running_var, conv2_weight, batchnorm1_beta, conv5_weight, conv5_bias, batchnorm17_beta, batchnorm1_gamma, conv4_bias, batchnorm17_running_mean, batchnorm8_gamma, batchnorm3_beta, batchnorm0_running_mean, conv26_weight, batchnorm13_beta, batchnorm2_gamma, batchnorm0_gamma, batchnorm12_running_mean, batchnorm16_running_mean, conv28_weight, batchnorm17_running_var, conv29_weight, conv4_weight, batchnorm7_running_mean, batchnorm9_gamma, conv18_bias, batchnorm18_gamma, batchnorm21_running_mean, batchnorm20_running_var, conv28_bias, batchnorm19_running_mean, batchnorm9_beta, conv24_bias, batchnorm16_gamma, conv25_weight, batchnorm19_beta, batchnorm7_running_var, conv18_weight, conv10_weight, batchnorm21_running_var, batchnorm2_beta, conv14_bias, conv0_weight, conv27_bias, batchnorm16_beta is not used by any computation. Is this intended?
  out = self.forward(*args)

avg reward: 0.08:   0%|          | 0/468 [00:00<?, ?it/s]
avg reward: 0.08:   0%|          | 1/468 [00:00<05:36,  1.39it/s]
avg reward: 0.08:   0%|          | 1/468 [00:00<05:36,  1.39it/s]
avg reward: 0.08:   0%|          | 1/468 [00:00<05:36,  1.39it/s]
avg reward: 0.08:   0%|          | 1/468 [00:00<05:36,  1.39it/s]
avg reward: 0.08:   0%|          | 1/468 [00:00<05:36,  1.39it/s]
avg reward: 0.08:   1%|          | 5/468 [00:00<01:00,  7.68it/s]
avg reward: 0.08:   1%|          | 5/468 [00:01<01:00,  7.68it/s]
avg reward: 0.08:   1%|          | 5/468 [00:01<01:00,  7.68it/s]
avg reward: 0.08:   1%|          | 5/468 [00:01<01:00,  7.68it/s]
avg reward: 0.08:   2%|▏         | 8/468 [00:01<00:47,  9.63it/s]
avg reward: 0.08:   2%|▏         | 8/468 [00:01<00:47,  9.63it/s]
avg reward: 0.08:   2%|▏         | 8/468 [00:01<00:47,  9.63it/s]
avg reward: 0.10:   2%|▏         | 8/468 [00:01<00:47,  9.63it/s]
avg reward: 0.10:   2%|▏         | 11/468 [00:01<00:43, 10.52it/s]
avg reward: 0.10:   2%|▏         | 11/468 [00:01<00:43, 10.52it/s]
avg reward: 0.10:   2%|▏         | 11/468 [00:01<00:43, 10.52it/s]
avg reward: 0.10:   2%|▏         | 11/468 [00:01<00:43, 10.52it/s]
avg reward: 0.10:   2%|▏         | 11/468 [00:01<00:43, 10.52it/s]
avg reward: 0.10:   2%|▏         | 11/468 [00:01<00:43, 10.52it/s]
avg reward: 0.10:   3%|▎         | 16/468 [00:01<00:33, 13.52it/s]
avg reward: 0.10:   3%|▎         | 16/468 [00:01<00:33, 13.52it/s]
avg reward: 0.10:   3%|▎         | 16/468 [00:01<00:33, 13.52it/s]
avg reward: 0.10:   3%|▎         | 16/468 [00:01<00:33, 13.52it/s]
avg reward: 0.10:   3%|▎         | 16/468 [00:01<00:33, 13.52it/s]
avg reward: 0.10:   4%|▍         | 20/468 [00:01<00:25, 17.72it/s]
avg reward: 0.11:   4%|▍         | 20/468 [00:01<00:25, 17.72it/s]
avg reward: 0.11:   4%|▍         | 20/468 [00:01<00:25, 17.72it/s]
avg reward: 0.11:   4%|▍         | 20/468 [00:01<00:25, 17.72it/s]
avg reward: 0.11:   5%|▍         | 23/468 [00:01<00:27, 16.17it/s]
avg reward: 0.11:   5%|▍         | 23/468 [00:01<00:27, 16.17it/s]
avg reward: 0.11:   5%|▍         | 23/468 [00:01<00:27, 16.17it/s]
avg reward: 0.11:   5%|▍         | 23/468 [00:02<00:27, 16.17it/s]
avg reward: 0.11:   6%|▌         | 26/468 [00:02<00:28, 15.27it/s]
avg reward: 0.11:   6%|▌         | 26/468 [00:02<00:28, 15.27it/s]
avg reward: 0.11:   6%|▌         | 26/468 [00:02<00:28, 15.27it/s]
avg reward: 0.11:   6%|▌         | 26/468 [00:02<00:28, 15.27it/s]
avg reward: 0.11:   6%|▌         | 26/468 [00:02<00:28, 15.27it/s]
avg reward: 0.14:   6%|▌         | 26/468 [00:02<00:28, 15.27it/s]
avg reward: 0.14:   7%|▋         | 31/468 [00:02<00:26, 16.55it/s]
avg reward: 0.14:   7%|▋         | 31/468 [00:02<00:26, 16.55it/s]
avg reward: 0.14:   7%|▋         | 31/468 [00:02<00:26, 16.55it/s]
avg reward: 0.14:   7%|▋         | 31/468 [00:02<00:26, 16.55it/s]
avg reward: 0.14:   7%|▋         | 31/468 [00:02<00:26, 16.55it/s]
avg reward: 0.14:   7%|▋         | 35/468 [00:02<00:21, 20.19it/s]
avg reward: 0.25:   7%|▋         | 35/468 [00:02<00:21, 20.19it/s]
avg reward: 0.25:   7%|▋         | 35/468 [00:02<00:21, 20.19it/s]
avg reward: 0.25:   7%|▋         | 35/468 [00:02<00:21, 20.19it/s]
avg reward: 0.25:   8%|▊         | 38/468 [00:02<00:23, 18.13it/s]
avg reward: 0.25:   8%|▊         | 38/468 [00:02<00:23, 18.13it/s]
avg reward: 0.25:   8%|▊         | 38/468 [00:02<00:23, 18.13it/s]
avg reward: 0.42:   8%|▊         | 38/468 [00:02<00:23, 18.13it/s]
avg reward: 0.42:   9%|▉         | 41/468 [00:02<00:25, 16.46it/s]
avg reward: 0.42:   9%|▉         | 41/468 [00:02<00:25, 16.46it/s]
avg reward: 0.42:   9%|▉         | 41/468 [00:02<00:25, 16.46it/s]
avg reward: 0.42:   9%|▉         | 41/468 [00:03<00:25, 16.46it/s]
avg reward: 0.42:   9%|▉         | 41/468 [00:03<00:25, 16.46it/s]
avg reward: 0.42:  10%|▉         | 45/468 [00:03<00:20, 20.29it/s]
avg reward: 0.47:  10%|▉         | 45/468 [00:03<00:20, 20.29it/s]
avg reward: 0.47:  10%|▉         | 45/468 [00:03<00:20, 20.29it/s]
avg reward: 0.47:  10%|▉         | 45/468 [00:03<00:20, 20.29it/s]
avg reward: 0.47:  10%|█         | 48/468 [00:03<00:24, 17.30it/s]
avg reward: 0.47:  10%|█         | 48/468 [00:03<00:24, 17.30it/s]
avg reward: 0.47:  10%|█         | 48/468 [00:03<00:24, 17.30it/s]
avg reward: 0.58:  10%|█         | 48/468 [00:03<00:24, 17.30it/s]
avg reward: 0.58:  11%|█         | 51/468 [00:03<00:25, 16.58it/s]
avg reward: 0.58:  11%|█         | 51/468 [00:03<00:25, 16.58it/s]
avg reward: 0.58:  11%|█         | 51/468 [00:03<00:25, 16.58it/s]
avg reward: 0.58:  11%|█         | 51/468 [00:03<00:25, 16.58it/s]
avg reward: 0.58:  11%|█         | 51/468 [00:03<00:25, 16.58it/s]
avg reward: 0.61:  11%|█         | 51/468 [00:03<00:25, 16.58it/s]
avg reward: 0.61:  12%|█▏        | 56/468 [00:03<00:23, 17.22it/s]
avg reward: 0.61:  12%|█▏        | 56/468 [00:03<00:23, 17.22it/s]
avg reward: 0.61:  12%|█▏        | 56/468 [00:03<00:23, 17.22it/s]
avg reward: 0.61:  12%|█▏        | 56/468 [00:03<00:23, 17.22it/s]
avg reward: 0.61:  12%|█▏        | 56/468 [00:03<00:23, 17.22it/s]
avg reward: 0.68:  12%|█▏        | 56/468 [00:04<00:23, 17.22it/s]
avg reward: 0.68:  13%|█▎        | 61/468 [00:04<00:23, 17.53it/s]
avg reward: 0.68:  13%|█▎        | 61/468 [00:04<00:23, 17.53it/s]
avg reward: 0.68:  13%|█▎        | 61/468 [00:04<00:23, 17.53it/s]
avg reward: 0.68:  13%|█▎        | 61/468 [00:04<00:23, 17.53it/s]
avg reward: 0.68:  13%|█▎        | 61/468 [00:04<00:23, 17.53it/s]
avg reward: 0.68:  14%|█▍        | 65/468 [00:04<00:19, 20.93it/s]
avg reward: 0.73:  14%|█▍        | 65/468 [00:04<00:19, 20.93it/s]
avg reward: 0.73:  14%|█▍        | 65/468 [00:04<00:19, 20.93it/s]
avg reward: 0.73:  14%|█▍        | 65/468 [00:04<00:19, 20.93it/s]
avg reward: 0.73:  15%|█▍        | 68/468 [00:04<00:21, 18.32it/s]
avg reward: 0.73:  15%|█▍        | 68/468 [00:04<00:21, 18.32it/s]
avg reward: 0.73:  15%|█▍        | 68/468 [00:04<00:21, 18.32it/s]
avg reward: 0.76:  15%|█▍        | 68/468 [00:04<00:21, 18.32it/s]
avg reward: 0.76:  15%|█▌        | 71/468 [00:04<00:23, 17.04it/s]
avg reward: 0.76:  15%|█▌        | 71/468 [00:04<00:23, 17.04it/s]
avg reward: 0.76:  15%|█▌        | 71/468 [00:04<00:23, 17.04it/s]
avg reward: 0.76:  15%|█▌        | 71/468 [00:04<00:23, 17.04it/s]
avg reward: 0.76:  15%|█▌        | 71/468 [00:04<00:23, 17.04it/s]
avg reward: 0.79:  15%|█▌        | 71/468 [00:04<00:23, 17.04it/s]
avg reward: 0.79:  16%|█▌        | 76/468 [00:04<00:21, 18.07it/s]
avg reward: 0.79:  16%|█▌        | 76/468 [00:04<00:21, 18.07it/s]
avg reward: 0.79:  16%|█▌        | 76/468 [00:04<00:21, 18.07it/s]
avg reward: 0.79:  16%|█▌        | 76/468 [00:04<00:21, 18.07it/s]
avg reward: 0.79:  16%|█▌        | 76/468 [00:04<00:21, 18.07it/s]
avg reward: 0.79:  17%|█▋        | 80/468 [00:04<00:18, 21.53it/s]
avg reward: 0.81:  17%|█▋        | 80/468 [00:05<00:18, 21.53it/s]
avg reward: 0.81:  17%|█▋        | 80/468 [00:05<00:18, 21.53it/s]
avg reward: 0.81:  17%|█▋        | 80/468 [00:05<00:18, 21.53it/s]
avg reward: 0.81:  18%|█▊        | 83/468 [00:05<00:20, 18.64it/s]
avg reward: 0.81:  18%|█▊        | 83/468 [00:05<00:20, 18.64it/s]
avg reward: 0.81:  18%|█▊        | 83/468 [00:05<00:20, 18.64it/s]
avg reward: 0.83:  18%|█▊        | 83/468 [00:05<00:20, 18.64it/s]
avg reward: 0.83:  18%|█▊        | 86/468 [00:05<00:22, 17.16it/s]
avg reward: 0.83:  18%|█▊        | 86/468 [00:05<00:22, 17.16it/s]
avg reward: 0.83:  18%|█▊        | 86/468 [00:05<00:22, 17.16it/s]
avg reward: 0.83:  18%|█▊        | 86/468 [00:05<00:22, 17.16it/s]
avg reward: 0.83:  18%|█▊        | 86/468 [00:05<00:22, 17.16it/s]
avg reward: 0.83:  19%|█▉        | 90/468 [00:05<00:18, 20.94it/s]
avg reward: 0.84:  19%|█▉        | 90/468 [00:05<00:18, 20.94it/s]
avg reward: 0.84:  19%|█▉        | 90/468 [00:05<00:18, 20.94it/s]
avg reward: 0.84:  19%|█▉        | 90/468 [00:05<00:18, 20.94it/s]
avg reward: 0.84:  20%|█▉        | 93/468 [00:05<00:23, 15.97it/s]
avg reward: 0.84:  20%|█▉        | 93/468 [00:05<00:23, 15.97it/s]
avg reward: 0.84:  20%|█▉        | 93/468 [00:05<00:23, 15.97it/s]
avg reward: 0.84:  20%|█▉        | 93/468 [00:06<00:23, 15.97it/s]
avg reward: 0.84:  21%|██        | 96/468 [00:06<00:32, 11.56it/s]
avg reward: 0.84:  21%|██        | 96/468 [00:06<00:32, 11.56it/s]
avg reward: 0.84:  21%|██        | 96/468 [00:06<00:32, 11.56it/s]
avg reward: 0.84:  21%|██        | 96/468 [00:06<00:32, 11.56it/s]
avg reward: 0.84:  21%|██        | 96/468 [00:06<00:32, 11.56it/s]
avg reward: 0.85:  21%|██        | 96/468 [00:06<00:32, 11.56it/s]
avg reward: 0.85:  22%|██▏       | 101/468 [00:06<00:27, 13.33it/s]
avg reward: 0.85:  22%|██▏       | 101/468 [00:06<00:27, 13.33it/s]
avg reward: 0.85:  22%|██▏       | 101/468 [00:06<00:27, 13.33it/s]
avg reward: 0.85:  22%|██▏       | 101/468 [00:06<00:27, 13.33it/s]
avg reward: 0.85:  22%|██▏       | 101/468 [00:06<00:27, 13.33it/s]
avg reward: 0.85:  22%|██▏       | 105/468 [00:06<00:21, 16.71it/s]
avg reward: 0.87:  22%|██▏       | 105/468 [00:06<00:21, 16.71it/s]
avg reward: 0.87:  22%|██▏       | 105/468 [00:06<00:21, 16.71it/s]
avg reward: 0.87:  22%|██▏       | 105/468 [00:06<00:21, 16.71it/s]
avg reward: 0.87:  23%|██▎       | 108/468 [00:06<00:23, 15.35it/s]
avg reward: 0.87:  23%|██▎       | 108/468 [00:06<00:23, 15.35it/s]
avg reward: 0.87:  23%|██▎       | 108/468 [00:06<00:23, 15.35it/s]
avg reward: 0.81:  23%|██▎       | 108/468 [00:07<00:23, 15.35it/s]
avg reward: 0.81:  24%|██▎       | 111/468 [00:07<00:24, 14.74it/s]
avg reward: 0.81:  24%|██▎       | 111/468 [00:07<00:24, 14.74it/s]
avg reward: 0.81:  24%|██▎       | 111/468 [00:07<00:24, 14.74it/s]
avg reward: 0.81:  24%|██▎       | 111/468 [00:07<00:24, 14.74it/s]
avg reward: 0.81:  24%|██▎       | 111/468 [00:07<00:24, 14.74it/s]
avg reward: 0.84:  24%|██▎       | 111/468 [00:07<00:24, 14.74it/s]
avg reward: 0.84:  25%|██▍       | 116/468 [00:07<00:22, 15.91it/s]
avg reward: 0.84:  25%|██▍       | 116/468 [00:07<00:22, 15.91it/s]
avg reward: 0.84:  25%|██▍       | 116/468 [00:07<00:22, 15.91it/s]
avg reward: 0.84:  25%|██▍       | 116/468 [00:07<00:22, 15.91it/s]
avg reward: 0.84:  25%|██▍       | 116/468 [00:07<00:22, 15.91it/s]
avg reward: 0.81:  25%|██▍       | 116/468 [00:07<00:22, 15.91it/s]
avg reward: 0.81:  26%|██▌       | 121/468 [00:07<00:20, 16.78it/s]
avg reward: 0.81:  26%|██▌       | 121/468 [00:07<00:20, 16.78it/s]
avg reward: 0.81:  26%|██▌       | 121/468 [00:07<00:20, 16.78it/s]
avg reward: 0.81:  26%|██▌       | 121/468 [00:07<00:20, 16.78it/s]
avg reward: 0.81:  26%|██▌       | 121/468 [00:07<00:20, 16.78it/s]
avg reward: 0.80:  26%|██▌       | 121/468 [00:07<00:20, 16.78it/s]
avg reward: 0.80:  27%|██▋       | 126/468 [00:07<00:19, 17.50it/s]
avg reward: 0.80:  27%|██▋       | 126/468 [00:07<00:19, 17.50it/s]
avg reward: 0.80:  27%|██▋       | 126/468 [00:07<00:19, 17.50it/s]
avg reward: 0.80:  27%|██▋       | 126/468 [00:07<00:19, 17.50it/s]
avg reward: 0.80:  27%|██▋       | 126/468 [00:07<00:19, 17.50it/s]
avg reward: 0.85:  27%|██▋       | 126/468 [00:08<00:19, 17.50it/s]
avg reward: 0.85:  28%|██▊       | 131/468 [00:08<00:19, 17.53it/s]
avg reward: 0.85:  28%|██▊       | 131/468 [00:08<00:19, 17.53it/s]
avg reward: 0.85:  28%|██▊       | 131/468 [00:08<00:19, 17.53it/s]
avg reward: 0.85:  28%|██▊       | 131/468 [00:08<00:19, 17.53it/s]
avg reward: 0.85:  28%|██▊       | 131/468 [00:08<00:19, 17.53it/s]
avg reward: 0.87:  28%|██▊       | 131/468 [00:08<00:19, 17.53it/s]
avg reward: 0.87:  29%|██▉       | 136/468 [00:08<00:18, 17.62it/s]
avg reward: 0.87:  29%|██▉       | 136/468 [00:08<00:18, 17.62it/s]
avg reward: 0.87:  29%|██▉       | 136/468 [00:08<00:18, 17.62it/s]
avg reward: 0.87:  29%|██▉       | 136/468 [00:08<00:18, 17.62it/s]
avg reward: 0.87:  29%|██▉       | 136/468 [00:08<00:18, 17.62it/s]
avg reward: 0.89:  29%|██▉       | 136/468 [00:08<00:18, 17.62it/s]
avg reward: 0.89:  30%|███       | 141/468 [00:08<00:18, 17.91it/s]
avg reward: 0.89:  30%|███       | 141/468 [00:08<00:18, 17.91it/s]
avg reward: 0.89:  30%|███       | 141/468 [00:08<00:18, 17.91it/s]
avg reward: 0.89:  30%|███       | 141/468 [00:08<00:18, 17.91it/s]
avg reward: 0.89:  30%|███       | 141/468 [00:08<00:18, 17.91it/s]
avg reward: 0.90:  30%|███       | 141/468 [00:08<00:18, 17.91it/s]
avg reward: 0.90:  31%|███       | 146/468 [00:09<00:17, 18.14it/s]
avg reward: 0.90:  31%|███       | 146/468 [00:09<00:17, 18.14it/s]
avg reward: 0.90:  31%|███       | 146/468 [00:09<00:17, 18.14it/s]
avg reward: 0.90:  31%|███       | 146/468 [00:09<00:17, 18.14it/s]
avg reward: 0.90:  31%|███       | 146/468 [00:09<00:17, 18.14it/s]
avg reward: 0.91:  31%|███       | 146/468 [00:09<00:17, 18.14it/s]
avg reward: 0.91:  32%|███▏      | 151/468 [00:09<00:17, 18.57it/s]
avg reward: 0.91:  32%|███▏      | 151/468 [00:09<00:17, 18.57it/s]
avg reward: 0.91:  32%|███▏      | 151/468 [00:09<00:17, 18.57it/s]
avg reward: 0.91:  32%|███▏      | 151/468 [00:09<00:17, 18.57it/s]
avg reward: 0.91:  32%|███▏      | 151/468 [00:09<00:17, 18.57it/s]
avg reward: 0.91:  33%|███▎      | 155/468 [00:09<00:14, 21.29it/s]
avg reward: 0.91:  33%|███▎      | 155/468 [00:09<00:14, 21.29it/s]
avg reward: 0.91:  33%|███▎      | 155/468 [00:09<00:14, 21.29it/s]
avg reward: 0.91:  33%|███▎      | 155/468 [00:09<00:14, 21.29it/s]
avg reward: 0.91:  34%|███▍      | 158/468 [00:09<00:17, 18.18it/s]
avg reward: 0.91:  34%|███▍      | 158/468 [00:09<00:17, 18.18it/s]
avg reward: 0.91:  34%|███▍      | 158/468 [00:09<00:17, 18.18it/s]
avg reward: 0.91:  34%|███▍      | 158/468 [00:09<00:17, 18.18it/s]
avg reward: 0.91:  34%|███▍      | 161/468 [00:09<00:18, 16.93it/s]
avg reward: 0.91:  34%|███▍      | 161/468 [00:09<00:18, 16.93it/s]
avg reward: 0.91:  34%|███▍      | 161/468 [00:09<00:18, 16.93it/s]
avg reward: 0.91:  34%|███▍      | 161/468 [00:09<00:18, 16.93it/s]
avg reward: 0.91:  34%|███▍      | 161/468 [00:09<00:18, 16.93it/s]
avg reward: 0.92:  34%|███▍      | 161/468 [00:10<00:18, 16.93it/s]
avg reward: 0.92:  35%|███▌      | 166/468 [00:10<00:17, 17.75it/s]
avg reward: 0.92:  35%|███▌      | 166/468 [00:10<00:17, 17.75it/s]
avg reward: 0.92:  35%|███▌      | 166/468 [00:10<00:17, 17.75it/s]
avg reward: 0.92:  35%|███▌      | 166/468 [00:10<00:17, 17.75it/s]
avg reward: 0.92:  35%|███▌      | 166/468 [00:10<00:17, 17.75it/s]
avg reward: 0.93:  35%|███▌      | 166/468 [00:10<00:17, 17.75it/s]
avg reward: 0.93:  37%|███▋      | 171/468 [00:10<00:16, 18.25it/s]
avg reward: 0.93:  37%|███▋      | 171/468 [00:10<00:16, 18.25it/s]
avg reward: 0.93:  37%|███▋      | 171/468 [00:10<00:16, 18.25it/s]
avg reward: 0.93:  37%|███▋      | 171/468 [00:10<00:16, 18.25it/s]
avg reward: 0.93:  37%|███▋      | 171/468 [00:10<00:16, 18.25it/s]
avg reward: 0.93:  37%|███▋      | 175/468 [00:10<00:13, 21.25it/s]
avg reward: 0.94:  37%|███▋      | 175/468 [00:10<00:13, 21.25it/s]
avg reward: 0.94:  37%|███▋      | 175/468 [00:10<00:13, 21.25it/s]
avg reward: 0.94:  37%|███▋      | 175/468 [00:10<00:13, 21.25it/s]
avg reward: 0.94:  38%|███▊      | 178/468 [00:10<00:15, 18.48it/s]
avg reward: 0.94:  38%|███▊      | 178/468 [00:10<00:15, 18.48it/s]
avg reward: 0.94:  38%|███▊      | 178/468 [00:10<00:15, 18.48it/s]
avg reward: 0.94:  38%|███▊      | 178/468 [00:10<00:15, 18.48it/s]
avg reward: 0.94:  39%|███▊      | 181/468 [00:10<00:16, 16.95it/s]
avg reward: 0.94:  39%|███▊      | 181/468 [00:10<00:16, 16.95it/s]
avg reward: 0.94:  39%|███▊      | 181/468 [00:10<00:16, 16.95it/s]
avg reward: 0.94:  39%|███▊      | 181/468 [00:10<00:16, 16.95it/s]
avg reward: 0.94:  39%|███▊      | 181/468 [00:11<00:16, 16.95it/s]
avg reward: 0.94:  39%|███▊      | 181/468 [00:11<00:16, 16.95it/s]
avg reward: 0.94:  40%|███▉      | 186/468 [00:11<00:16, 17.29it/s]
avg reward: 0.94:  40%|███▉      | 186/468 [00:11<00:16, 17.29it/s]
avg reward: 0.94:  40%|███▉      | 186/468 [00:11<00:16, 17.29it/s]
avg reward: 0.94:  40%|███▉      | 186/468 [00:11<00:16, 17.29it/s]
avg reward: 0.94:  40%|███▉      | 186/468 [00:11<00:16, 17.29it/s]
avg reward: 0.94:  41%|████      | 190/468 [00:11<00:13, 20.66it/s]
avg reward: 0.95:  41%|████      | 190/468 [00:11<00:13, 20.66it/s]
avg reward: 0.95:  41%|████      | 190/468 [00:11<00:13, 20.66it/s]
avg reward: 0.95:  41%|████      | 190/468 [00:11<00:13, 20.66it/s]
avg reward: 0.95:  41%|████      | 193/468 [00:11<00:15, 17.42it/s]
avg reward: 0.95:  41%|████      | 193/468 [00:11<00:15, 17.42it/s]
avg reward: 0.95:  41%|████      | 193/468 [00:11<00:15, 17.42it/s]
avg reward: 0.95:  41%|████      | 193/468 [00:11<00:15, 17.42it/s]
avg reward: 0.95:  42%|████▏     | 196/468 [00:11<00:17, 15.21it/s]
avg reward: 0.95:  42%|████▏     | 196/468 [00:11<00:17, 15.21it/s]
avg reward: 0.95:  42%|████▏     | 196/468 [00:11<00:17, 15.21it/s]
avg reward: 0.95:  42%|████▏     | 196/468 [00:11<00:17, 15.21it/s]
avg reward: 0.95:  42%|████▏     | 196/468 [00:11<00:17, 15.21it/s]
avg reward: 0.95:  42%|████▏     | 196/468 [00:12<00:17, 15.21it/s]
avg reward: 0.95:  43%|████▎     | 201/468 [00:12<00:16, 16.12it/s]
avg reward: 0.95:  43%|████▎     | 201/468 [00:12<00:16, 16.12it/s]
avg reward: 0.95:  43%|████▎     | 201/468 [00:12<00:16, 16.12it/s]
avg reward: 0.95:  43%|████▎     | 201/468 [00:12<00:16, 16.12it/s]
avg reward: 0.95:  43%|████▎     | 201/468 [00:12<00:16, 16.12it/s]
avg reward: 0.96:  43%|████▎     | 201/468 [00:12<00:16, 16.12it/s]
avg reward: 0.96:  44%|████▍     | 206/468 [00:12<00:15, 17.14it/s]
avg reward: 0.96:  44%|████▍     | 206/468 [00:12<00:15, 17.14it/s]
avg reward: 0.96:  44%|████▍     | 206/468 [00:12<00:15, 17.14it/s]
avg reward: 0.96:  44%|████▍     | 206/468 [00:12<00:15, 17.14it/s]
avg reward: 0.96:  44%|████▍     | 206/468 [00:12<00:15, 17.14it/s]
avg reward: 0.96:  45%|████▍     | 210/468 [00:12<00:12, 20.02it/s]
avg reward: 0.96:  45%|████▍     | 210/468 [00:12<00:12, 20.02it/s]
avg reward: 0.96:  45%|████▍     | 210/468 [00:12<00:12, 20.02it/s]
avg reward: 0.96:  45%|████▍     | 210/468 [00:12<00:12, 20.02it/s]
avg reward: 0.96:  46%|████▌     | 213/468 [00:12<00:14, 17.73it/s]
avg reward: 0.96:  46%|████▌     | 213/468 [00:12<00:14, 17.73it/s]
avg reward: 0.96:  46%|████▌     | 213/468 [00:12<00:14, 17.73it/s]
avg reward: 0.96:  46%|████▌     | 213/468 [00:12<00:14, 17.73it/s]
avg reward: 0.96:  46%|████▌     | 216/468 [00:12<00:15, 16.18it/s]
avg reward: 0.96:  46%|████▌     | 216/468 [00:12<00:15, 16.18it/s]
avg reward: 0.96:  46%|████▌     | 216/468 [00:12<00:15, 16.18it/s]
avg reward: 0.96:  46%|████▌     | 216/468 [00:13<00:15, 16.18it/s]
avg reward: 0.96:  46%|████▌     | 216/468 [00:13<00:15, 16.18it/s]
avg reward: 0.96:  46%|████▌     | 216/468 [00:13<00:15, 16.18it/s]
avg reward: 0.96:  47%|████▋     | 221/468 [00:13<00:14, 17.09it/s]
avg reward: 0.96:  47%|████▋     | 221/468 [00:13<00:14, 17.09it/s]
avg reward: 0.96:  47%|████▋     | 221/468 [00:13<00:14, 17.09it/s]
avg reward: 0.96:  47%|████▋     | 221/468 [00:13<00:14, 17.09it/s]
avg reward: 0.96:  47%|████▋     | 221/468 [00:13<00:14, 17.09it/s]
avg reward: 0.96:  48%|████▊     | 225/468 [00:13<00:11, 20.35it/s]
avg reward: 0.96:  48%|████▊     | 225/468 [00:13<00:11, 20.35it/s]
avg reward: 0.96:  48%|████▊     | 225/468 [00:13<00:11, 20.35it/s]
avg reward: 0.96:  48%|████▊     | 225/468 [00:13<00:11, 20.35it/s]
avg reward: 0.96:  49%|████▊     | 228/468 [00:13<00:13, 17.99it/s]
avg reward: 0.96:  49%|████▊     | 228/468 [00:13<00:13, 17.99it/s]
avg reward: 0.96:  49%|████▊     | 228/468 [00:13<00:13, 17.99it/s]
avg reward: 0.96:  49%|████▊     | 228/468 [00:13<00:13, 17.99it/s]
avg reward: 0.96:  49%|████▉     | 231/468 [00:13<00:14, 16.82it/s]
avg reward: 0.96:  49%|████▉     | 231/468 [00:13<00:14, 16.82it/s]
avg reward: 0.96:  49%|████▉     | 231/468 [00:13<00:14, 16.82it/s]
avg reward: 0.96:  49%|████▉     | 231/468 [00:13<00:14, 16.82it/s]
avg reward: 0.96:  49%|████▉     | 231/468 [00:13<00:14, 16.82it/s]
avg reward: 0.97:  49%|████▉     | 231/468 [00:14<00:14, 16.82it/s]
avg reward: 0.97:  50%|█████     | 236/468 [00:14<00:13, 16.95it/s]
avg reward: 0.97:  50%|█████     | 236/468 [00:14<00:13, 16.95it/s]
avg reward: 0.97:  50%|█████     | 236/468 [00:14<00:13, 16.95it/s]
avg reward: 0.97:  50%|█████     | 236/468 [00:14<00:13, 16.95it/s]
avg reward: 0.97:  50%|█████     | 236/468 [00:14<00:13, 16.95it/s]
avg reward: 0.97:  51%|█████▏    | 240/468 [00:14<00:11, 20.52it/s]
avg reward: 0.97:  51%|█████▏    | 240/468 [00:14<00:11, 20.52it/s]
avg reward: 0.97:  51%|█████▏    | 240/468 [00:14<00:11, 20.52it/s]
avg reward: 0.97:  51%|█████▏    | 240/468 [00:14<00:11, 20.52it/s]
avg reward: 0.97:  52%|█████▏    | 243/468 [00:14<00:12, 18.11it/s]
avg reward: 0.97:  52%|█████▏    | 243/468 [00:14<00:12, 18.11it/s]
avg reward: 0.97:  52%|█████▏    | 243/468 [00:14<00:12, 18.11it/s]
avg reward: 0.97:  52%|█████▏    | 243/468 [00:14<00:12, 18.11it/s]
avg reward: 0.97:  53%|█████▎    | 246/468 [00:14<00:13, 16.90it/s]
avg reward: 0.97:  53%|█████▎    | 246/468 [00:14<00:13, 16.90it/s]
avg reward: 0.97:  53%|█████▎    | 246/468 [00:14<00:13, 16.90it/s]
avg reward: 0.97:  53%|█████▎    | 246/468 [00:14<00:13, 16.90it/s]
avg reward: 0.97:  53%|█████▎    | 246/468 [00:14<00:13, 16.90it/s]
avg reward: 0.97:  53%|█████▎    | 246/468 [00:14<00:13, 16.90it/s]
avg reward: 0.97:  54%|█████▎    | 251/468 [00:14<00:12, 17.68it/s]
avg reward: 0.97:  54%|█████▎    | 251/468 [00:14<00:12, 17.68it/s]
avg reward: 0.97:  54%|█████▎    | 251/468 [00:14<00:12, 17.68it/s]
avg reward: 0.97:  54%|█████▎    | 251/468 [00:14<00:12, 17.68it/s]
avg reward: 0.97:  54%|█████▎    | 251/468 [00:14<00:12, 17.68it/s]
avg reward: 0.97:  54%|█████▎    | 251/468 [00:15<00:12, 17.68it/s]
avg reward: 0.97:  55%|█████▍    | 256/468 [00:15<00:11, 18.13it/s]
avg reward: 0.97:  55%|█████▍    | 256/468 [00:15<00:11, 18.13it/s]
avg reward: 0.97:  55%|█████▍    | 256/468 [00:15<00:11, 18.13it/s]
avg reward: 0.97:  55%|█████▍    | 256/468 [00:15<00:11, 18.13it/s]
avg reward: 0.97:  55%|█████▍    | 256/468 [00:15<00:11, 18.13it/s]
avg reward: 0.96:  55%|█████▍    | 256/468 [00:15<00:11, 18.13it/s]
avg reward: 0.96:  56%|█████▌    | 261/468 [00:15<00:11, 18.07it/s]
avg reward: 0.96:  56%|█████▌    | 261/468 [00:15<00:11, 18.07it/s]
avg reward: 0.96:  56%|█████▌    | 261/468 [00:15<00:11, 18.07it/s]
avg reward: 0.96:  56%|█████▌    | 261/468 [00:15<00:11, 18.07it/s]
avg reward: 0.96:  56%|█████▌    | 261/468 [00:15<00:11, 18.07it/s]
avg reward: 0.97:  56%|█████▌    | 261/468 [00:15<00:11, 18.07it/s]
avg reward: 0.97:  57%|█████▋    | 266/468 [00:15<00:11, 18.12it/s]
avg reward: 0.97:  57%|█████▋    | 266/468 [00:15<00:11, 18.12it/s]
avg reward: 0.97:  57%|█████▋    | 266/468 [00:15<00:11, 18.12it/s]
avg reward: 0.97:  57%|█████▋    | 266/468 [00:15<00:11, 18.12it/s]
avg reward: 0.97:  57%|█████▋    | 266/468 [00:15<00:11, 18.12it/s]
avg reward: 0.97:  58%|█████▊    | 270/468 [00:15<00:09, 21.09it/s]
avg reward: 0.97:  58%|█████▊    | 270/468 [00:15<00:09, 21.09it/s]
avg reward: 0.97:  58%|█████▊    | 270/468 [00:15<00:09, 21.09it/s]
avg reward: 0.97:  58%|█████▊    | 270/468 [00:15<00:09, 21.09it/s]
avg reward: 0.97:  58%|█████▊    | 273/468 [00:15<00:10, 18.46it/s]
avg reward: 0.97:  58%|█████▊    | 273/468 [00:16<00:10, 18.46it/s]
avg reward: 0.97:  58%|█████▊    | 273/468 [00:16<00:10, 18.46it/s]
avg reward: 0.97:  58%|█████▊    | 273/468 [00:16<00:10, 18.46it/s]
avg reward: 0.97:  59%|█████▉    | 276/468 [00:16<00:11, 17.05it/s]
avg reward: 0.97:  59%|█████▉    | 276/468 [00:16<00:11, 17.05it/s]
avg reward: 0.97:  59%|█████▉    | 276/468 [00:16<00:11, 17.05it/s]
avg reward: 0.97:  59%|█████▉    | 276/468 [00:16<00:11, 17.05it/s]
avg reward: 0.97:  59%|█████▉    | 276/468 [00:16<00:11, 17.05it/s]
avg reward: 0.97:  59%|█████▉    | 276/468 [00:16<00:11, 17.05it/s]
avg reward: 0.97:  60%|██████    | 281/468 [00:16<00:10, 17.47it/s]
avg reward: 0.97:  60%|██████    | 281/468 [00:16<00:10, 17.47it/s]
avg reward: 0.97:  60%|██████    | 281/468 [00:16<00:10, 17.47it/s]
avg reward: 0.97:  60%|██████    | 281/468 [00:16<00:10, 17.47it/s]
avg reward: 0.97:  60%|██████    | 281/468 [00:16<00:10, 17.47it/s]
avg reward: 0.97:  60%|██████    | 281/468 [00:16<00:10, 17.47it/s]
avg reward: 0.97:  61%|██████    | 286/468 [00:16<00:10, 17.96it/s]
avg reward: 0.97:  61%|██████    | 286/468 [00:16<00:10, 17.96it/s]
avg reward: 0.97:  61%|██████    | 286/468 [00:16<00:10, 17.96it/s]
avg reward: 0.97:  61%|██████    | 286/468 [00:16<00:10, 17.96it/s]
avg reward: 0.97:  61%|██████    | 286/468 [00:16<00:10, 17.96it/s]
avg reward: 0.98:  61%|██████    | 286/468 [00:17<00:10, 17.96it/s]
avg reward: 0.98:  62%|██████▏   | 291/468 [00:17<00:09, 17.78it/s]
avg reward: 0.98:  62%|██████▏   | 291/468 [00:17<00:09, 17.78it/s]
avg reward: 0.98:  62%|██████▏   | 291/468 [00:17<00:09, 17.78it/s]
avg reward: 0.98:  62%|██████▏   | 291/468 [00:17<00:09, 17.78it/s]
avg reward: 0.98:  62%|██████▏   | 291/468 [00:17<00:09, 17.78it/s]
avg reward: 0.98:  62%|██████▏   | 291/468 [00:17<00:09, 17.78it/s]
avg reward: 0.98:  63%|██████▎   | 296/468 [00:17<00:09, 18.22it/s]
avg reward: 0.98:  63%|██████▎   | 296/468 [00:17<00:09, 18.22it/s]
avg reward: 0.98:  63%|██████▎   | 296/468 [00:17<00:09, 18.22it/s]
avg reward: 0.98:  63%|██████▎   | 296/468 [00:17<00:09, 18.22it/s]
avg reward: 0.98:  63%|██████▎   | 296/468 [00:17<00:09, 18.22it/s]
avg reward: 0.99:  63%|██████▎   | 296/468 [00:17<00:09, 18.22it/s]
avg reward: 0.99:  64%|██████▍   | 301/468 [00:17<00:09, 18.28it/s]
avg reward: 0.99:  64%|██████▍   | 301/468 [00:17<00:09, 18.28it/s]
avg reward: 0.99:  64%|██████▍   | 301/468 [00:17<00:09, 18.28it/s]
avg reward: 0.99:  64%|██████▍   | 301/468 [00:17<00:09, 18.28it/s]
avg reward: 0.99:  64%|██████▍   | 301/468 [00:17<00:09, 18.28it/s]
avg reward: 0.99:  65%|██████▌   | 305/468 [00:17<00:07, 21.22it/s]
avg reward: 0.99:  65%|██████▌   | 305/468 [00:17<00:07, 21.22it/s]
avg reward: 0.99:  65%|██████▌   | 305/468 [00:17<00:07, 21.22it/s]
avg reward: 0.99:  65%|██████▌   | 305/468 [00:17<00:07, 21.22it/s]
avg reward: 0.99:  66%|██████▌   | 308/468 [00:17<00:08, 18.72it/s]
avg reward: 0.99:  66%|██████▌   | 308/468 [00:17<00:08, 18.72it/s]
avg reward: 0.99:  66%|██████▌   | 308/468 [00:17<00:08, 18.72it/s]
avg reward: 0.98:  66%|██████▌   | 308/468 [00:18<00:08, 18.72it/s]
avg reward: 0.98:  66%|██████▋   | 311/468 [00:18<00:09, 16.88it/s]
avg reward: 0.98:  66%|██████▋   | 311/468 [00:18<00:09, 16.88it/s]
avg reward: 0.98:  66%|██████▋   | 311/468 [00:18<00:09, 16.88it/s]
avg reward: 0.98:  66%|██████▋   | 311/468 [00:18<00:09, 16.88it/s]
avg reward: 0.98:  66%|██████▋   | 311/468 [00:18<00:09, 16.88it/s]
avg reward: 0.98:  66%|██████▋   | 311/468 [00:18<00:09, 16.88it/s]
avg reward: 0.98:  68%|██████▊   | 316/468 [00:18<00:08, 17.27it/s]
avg reward: 0.98:  68%|██████▊   | 316/468 [00:18<00:08, 17.27it/s]
avg reward: 0.98:  68%|██████▊   | 316/468 [00:18<00:08, 17.27it/s]
avg reward: 0.98:  68%|██████▊   | 316/468 [00:18<00:08, 17.27it/s]
avg reward: 0.98:  68%|██████▊   | 316/468 [00:18<00:08, 17.27it/s]
avg reward: 0.98:  68%|██████▊   | 320/468 [00:18<00:07, 20.64it/s]
avg reward: 0.99:  68%|██████▊   | 320/468 [00:18<00:07, 20.64it/s]
avg reward: 0.99:  68%|██████▊   | 320/468 [00:18<00:07, 20.64it/s]
avg reward: 0.99:  68%|██████▊   | 320/468 [00:18<00:07, 20.64it/s]
avg reward: 0.99:  69%|██████▉   | 323/468 [00:18<00:07, 18.54it/s]
avg reward: 0.99:  69%|██████▉   | 323/468 [00:18<00:07, 18.54it/s]
avg reward: 0.99:  69%|██████▉   | 323/468 [00:18<00:07, 18.54it/s]
avg reward: 0.99:  69%|██████▉   | 323/468 [00:18<00:07, 18.54it/s]
avg reward: 0.99:  70%|██████▉   | 326/468 [00:18<00:08, 16.91it/s]
avg reward: 0.99:  70%|██████▉   | 326/468 [00:18<00:08, 16.91it/s]
avg reward: 0.99:  70%|██████▉   | 326/468 [00:19<00:08, 16.91it/s]
avg reward: 0.99:  70%|██████▉   | 326/468 [00:19<00:08, 16.91it/s]
avg reward: 0.99:  70%|██████▉   | 326/468 [00:19<00:08, 16.91it/s]
avg reward: 0.99:  70%|██████▉   | 326/468 [00:19<00:08, 16.91it/s]
avg reward: 0.99:  71%|███████   | 331/468 [00:19<00:07, 17.51it/s]
avg reward: 0.99:  71%|███████   | 331/468 [00:19<00:07, 17.51it/s]
avg reward: 0.99:  71%|███████   | 331/468 [00:19<00:07, 17.51it/s]
avg reward: 0.99:  71%|███████   | 331/468 [00:19<00:07, 17.51it/s]
avg reward: 0.99:  71%|███████   | 331/468 [00:19<00:07, 17.51it/s]
avg reward: 0.99:  71%|███████   | 331/468 [00:19<00:07, 17.51it/s]
avg reward: 0.99:  72%|███████▏  | 336/468 [00:19<00:07, 17.56it/s]
avg reward: 0.99:  72%|███████▏  | 336/468 [00:19<00:07, 17.56it/s]
avg reward: 0.99:  72%|███████▏  | 336/468 [00:19<00:07, 17.56it/s]
avg reward: 0.99:  72%|███████▏  | 336/468 [00:19<00:07, 17.56it/s]
avg reward: 0.99:  72%|███████▏  | 336/468 [00:19<00:07, 17.56it/s]
avg reward: 0.99:  72%|███████▏  | 336/468 [00:19<00:07, 17.56it/s]
avg reward: 0.99:  73%|███████▎  | 341/468 [00:19<00:07, 17.71it/s]
avg reward: 0.99:  73%|███████▎  | 341/468 [00:19<00:07, 17.71it/s]
avg reward: 0.99:  73%|███████▎  | 341/468 [00:19<00:07, 17.71it/s]
avg reward: 0.99:  73%|███████▎  | 341/468 [00:19<00:07, 17.71it/s]
avg reward: 0.99:  73%|███████▎  | 341/468 [00:19<00:07, 17.71it/s]
avg reward: 0.99:  73%|███████▎  | 341/468 [00:20<00:07, 17.71it/s]
avg reward: 0.99:  74%|███████▍  | 346/468 [00:20<00:06, 18.05it/s]
avg reward: 0.99:  74%|███████▍  | 346/468 [00:20<00:06, 18.05it/s]
avg reward: 0.99:  74%|███████▍  | 346/468 [00:20<00:06, 18.05it/s]
avg reward: 0.99:  74%|███████▍  | 346/468 [00:20<00:06, 18.05it/s]
avg reward: 0.99:  74%|███████▍  | 346/468 [00:20<00:06, 18.05it/s]
avg reward: 0.99:  74%|███████▍  | 346/468 [00:20<00:06, 18.05it/s]
avg reward: 0.99:  75%|███████▌  | 351/468 [00:20<00:06, 18.25it/s]
avg reward: 0.99:  75%|███████▌  | 351/468 [00:20<00:06, 18.25it/s]
avg reward: 0.99:  75%|███████▌  | 351/468 [00:20<00:06, 18.25it/s]
avg reward: 0.99:  75%|███████▌  | 351/468 [00:20<00:06, 18.25it/s]
avg reward: 0.99:  75%|███████▌  | 351/468 [00:20<00:06, 18.25it/s]
avg reward: 1.00:  75%|███████▌  | 351/468 [00:20<00:06, 18.25it/s]
avg reward: 1.00:  76%|███████▌  | 356/468 [00:20<00:06, 18.10it/s]
avg reward: 1.00:  76%|███████▌  | 356/468 [00:20<00:06, 18.10it/s]
avg reward: 1.00:  76%|███████▌  | 356/468 [00:20<00:06, 18.10it/s]
avg reward: 1.00:  76%|███████▌  | 356/468 [00:20<00:06, 18.10it/s]
avg reward: 1.00:  76%|███████▌  | 356/468 [00:20<00:06, 18.10it/s]
avg reward: 1.00:  76%|███████▌  | 356/468 [00:20<00:06, 18.10it/s]
avg reward: 1.00:  77%|███████▋  | 361/468 [00:20<00:05, 18.20it/s]
avg reward: 1.00:  77%|███████▋  | 361/468 [00:20<00:05, 18.20it/s]
avg reward: 1.00:  77%|███████▋  | 361/468 [00:20<00:05, 18.20it/s]
avg reward: 1.00:  77%|███████▋  | 361/468 [00:20<00:05, 18.20it/s]
avg reward: 1.00:  77%|███████▋  | 361/468 [00:20<00:05, 18.20it/s]
avg reward: 1.01:  77%|███████▋  | 361/468 [00:21<00:05, 18.20it/s]
avg reward: 1.01:  78%|███████▊  | 366/468 [00:21<00:05, 18.42it/s]
avg reward: 1.01:  78%|███████▊  | 366/468 [00:21<00:05, 18.42it/s]
avg reward: 1.01:  78%|███████▊  | 366/468 [00:21<00:05, 18.42it/s]
avg reward: 1.01:  78%|███████▊  | 366/468 [00:21<00:05, 18.42it/s]
avg reward: 1.01:  78%|███████▊  | 366/468 [00:21<00:05, 18.42it/s]
avg reward: 1.01:  78%|███████▊  | 366/468 [00:21<00:05, 18.42it/s]
avg reward: 1.01:  79%|███████▉  | 371/468 [00:21<00:05, 18.80it/s]
avg reward: 1.01:  79%|███████▉  | 371/468 [00:21<00:05, 18.80it/s]
avg reward: 1.01:  79%|███████▉  | 371/468 [00:21<00:05, 18.80it/s]
avg reward: 1.01:  79%|███████▉  | 371/468 [00:21<00:05, 18.80it/s]
avg reward: 1.01:  79%|███████▉  | 371/468 [00:21<00:05, 18.80it/s]
avg reward: 1.01:  79%|███████▉  | 371/468 [00:21<00:05, 18.80it/s]
avg reward: 1.01:  80%|████████  | 376/468 [00:21<00:05, 18.39it/s]
avg reward: 1.01:  80%|████████  | 376/468 [00:21<00:05, 18.39it/s]
avg reward: 1.01:  80%|████████  | 376/468 [00:21<00:05, 18.39it/s]
avg reward: 1.01:  80%|████████  | 376/468 [00:21<00:05, 18.39it/s]
avg reward: 1.01:  80%|████████  | 376/468 [00:21<00:05, 18.39it/s]
avg reward: 1.01:  80%|████████  | 376/468 [00:21<00:05, 18.39it/s]
avg reward: 1.01:  81%|████████▏ | 381/468 [00:21<00:04, 18.63it/s]
avg reward: 1.01:  81%|████████▏ | 381/468 [00:21<00:04, 18.63it/s]
avg reward: 1.01:  81%|████████▏ | 381/468 [00:21<00:04, 18.63it/s]
avg reward: 1.01:  81%|████████▏ | 381/468 [00:22<00:04, 18.63it/s]
avg reward: 1.01:  81%|████████▏ | 381/468 [00:22<00:04, 18.63it/s]
avg reward: 1.01:  82%|████████▏ | 385/468 [00:22<00:03, 21.29it/s]
avg reward: 1.01:  82%|████████▏ | 385/468 [00:22<00:03, 21.29it/s]
avg reward: 1.01:  82%|████████▏ | 385/468 [00:22<00:03, 21.29it/s]
avg reward: 1.01:  82%|████████▏ | 385/468 [00:22<00:03, 21.29it/s]
avg reward: 1.01:  83%|████████▎ | 388/468 [00:22<00:04, 18.03it/s]
avg reward: 1.01:  83%|████████▎ | 388/468 [00:22<00:04, 18.03it/s]
avg reward: 1.01:  83%|████████▎ | 388/468 [00:22<00:04, 18.03it/s]
avg reward: 1.01:  83%|████████▎ | 388/468 [00:22<00:04, 18.03it/s]
avg reward: 1.01:  84%|████████▎ | 391/468 [00:22<00:04, 16.58it/s]
avg reward: 1.01:  84%|████████▎ | 391/468 [00:22<00:04, 16.58it/s]
avg reward: 1.01:  84%|████████▎ | 391/468 [00:22<00:04, 16.58it/s]
avg reward: 1.01:  84%|████████▎ | 391/468 [00:22<00:04, 16.58it/s]
avg reward: 1.01:  84%|████████▎ | 391/468 [00:22<00:04, 16.58it/s]
avg reward: 1.01:  84%|████████▎ | 391/468 [00:22<00:04, 16.58it/s]
avg reward: 1.01:  85%|████████▍ | 396/468 [00:22<00:04, 17.29it/s]
avg reward: 1.01:  85%|████████▍ | 396/468 [00:22<00:04, 17.29it/s]
avg reward: 1.01:  85%|████████▍ | 396/468 [00:22<00:04, 17.29it/s]
avg reward: 1.01:  85%|████████▍ | 396/468 [00:22<00:04, 17.29it/s]
avg reward: 1.01:  85%|████████▍ | 396/468 [00:22<00:04, 17.29it/s]
avg reward: 1.01:  85%|████████▍ | 396/468 [00:23<00:04, 17.29it/s]
avg reward: 1.01:  86%|████████▌ | 401/468 [00:23<00:03, 17.75it/s]
avg reward: 1.01:  86%|████████▌ | 401/468 [00:23<00:03, 17.75it/s]
avg reward: 1.01:  86%|████████▌ | 401/468 [00:23<00:03, 17.75it/s]
avg reward: 1.01:  86%|████████▌ | 401/468 [00:23<00:03, 17.75it/s]
avg reward: 1.01:  86%|████████▌ | 401/468 [00:23<00:03, 17.75it/s]
avg reward: 1.01:  86%|████████▌ | 401/468 [00:23<00:03, 17.75it/s]
avg reward: 1.01:  87%|████████▋ | 406/468 [00:23<00:03, 18.17it/s]
avg reward: 1.01:  87%|████████▋ | 406/468 [00:23<00:03, 18.17it/s]
avg reward: 1.01:  87%|████████▋ | 406/468 [00:23<00:03, 18.17it/s]
avg reward: 1.01:  87%|████████▋ | 406/468 [00:23<00:03, 18.17it/s]
avg reward: 1.01:  87%|████████▋ | 406/468 [00:23<00:03, 18.17it/s]
avg reward: 1.01:  87%|████████▋ | 406/468 [00:23<00:03, 18.17it/s]
avg reward: 1.01:  88%|████████▊ | 411/468 [00:23<00:03, 18.64it/s]
avg reward: 1.01:  88%|████████▊ | 411/468 [00:23<00:03, 18.64it/s]
avg reward: 1.01:  88%|████████▊ | 411/468 [00:23<00:03, 18.64it/s]
avg reward: 1.01:  88%|████████▊ | 411/468 [00:23<00:03, 18.64it/s]
avg reward: 1.01:  88%|████████▊ | 411/468 [00:23<00:03, 18.64it/s]
avg reward: 1.01:  88%|████████▊ | 411/468 [00:23<00:03, 18.64it/s]
avg reward: 1.01:  89%|████████▉ | 416/468 [00:23<00:02, 18.91it/s]
avg reward: 1.01:  89%|████████▉ | 416/468 [00:23<00:02, 18.91it/s]
avg reward: 1.01:  89%|████████▉ | 416/468 [00:23<00:02, 18.91it/s]
avg reward: 1.01:  89%|████████▉ | 416/468 [00:23<00:02, 18.91it/s]
avg reward: 1.01:  89%|████████▉ | 416/468 [00:23<00:02, 18.91it/s]
avg reward: 1.00:  89%|████████▉ | 416/468 [00:24<00:02, 18.91it/s]
avg reward: 1.00:  90%|████████▉ | 421/468 [00:24<00:02, 18.70it/s]
avg reward: 1.00:  90%|████████▉ | 421/468 [00:24<00:02, 18.70it/s]
avg reward: 1.00:  90%|████████▉ | 421/468 [00:24<00:02, 18.70it/s]
avg reward: 1.00:  90%|████████▉ | 421/468 [00:24<00:02, 18.70it/s]
avg reward: 1.00:  90%|████████▉ | 421/468 [00:24<00:02, 18.70it/s]
avg reward: 1.00:  90%|████████▉ | 421/468 [00:24<00:02, 18.70it/s]
avg reward: 1.00:  91%|█████████ | 426/468 [00:24<00:02, 18.98it/s]
avg reward: 1.00:  91%|█████████ | 426/468 [00:24<00:02, 18.98it/s]
avg reward: 1.00:  91%|█████████ | 426/468 [00:24<00:02, 18.98it/s]
avg reward: 1.00:  91%|█████████ | 426/468 [00:24<00:02, 18.98it/s]
avg reward: 1.00:  91%|█████████ | 426/468 [00:24<00:02, 18.98it/s]
avg reward: 1.00:  92%|█████████▏| 430/468 [00:24<00:01, 21.96it/s]
avg reward: 1.01:  92%|█████████▏| 430/468 [00:24<00:01, 21.96it/s]
avg reward: 1.01:  92%|█████████▏| 430/468 [00:24<00:01, 21.96it/s]
avg reward: 1.01:  92%|█████████▏| 430/468 [00:24<00:01, 21.96it/s]
avg reward: 1.01:  93%|█████████▎| 433/468 [00:24<00:01, 19.04it/s]
avg reward: 1.01:  93%|█████████▎| 433/468 [00:24<00:01, 19.04it/s]
avg reward: 1.01:  93%|█████████▎| 433/468 [00:24<00:01, 19.04it/s]
avg reward: 1.01:  93%|█████████▎| 433/468 [00:24<00:01, 19.04it/s]
avg reward: 1.01:  93%|█████████▎| 436/468 [00:24<00:01, 17.51it/s]
avg reward: 1.01:  93%|█████████▎| 436/468 [00:24<00:01, 17.51it/s]
avg reward: 1.01:  93%|█████████▎| 436/468 [00:24<00:01, 17.51it/s]
avg reward: 1.01:  93%|█████████▎| 436/468 [00:24<00:01, 17.51it/s]
avg reward: 1.01:  93%|█████████▎| 436/468 [00:25<00:01, 17.51it/s]
avg reward: 1.01:  94%|█████████▍| 440/468 [00:25<00:01, 20.86it/s]
avg reward: 1.01:  94%|█████████▍| 440/468 [00:25<00:01, 20.86it/s]
avg reward: 1.01:  94%|█████████▍| 440/468 [00:25<00:01, 20.86it/s]
avg reward: 1.01:  94%|█████████▍| 440/468 [00:25<00:01, 20.86it/s]
avg reward: 1.01:  95%|█████████▍| 443/468 [00:25<00:01, 18.09it/s]
avg reward: 1.01:  95%|█████████▍| 443/468 [00:25<00:01, 18.09it/s]
avg reward: 1.01:  95%|█████████▍| 443/468 [00:25<00:01, 18.09it/s]
avg reward: 1.01:  95%|█████████▍| 443/468 [00:25<00:01, 18.09it/s]
avg reward: 1.01:  95%|█████████▌| 446/468 [00:25<00:01, 16.90it/s]
avg reward: 1.01:  95%|█████████▌| 446/468 [00:25<00:01, 16.90it/s]
avg reward: 1.01:  95%|█████████▌| 446/468 [00:25<00:01, 16.90it/s]
avg reward: 1.01:  95%|█████████▌| 446/468 [00:25<00:01, 16.90it/s]
avg reward: 1.01:  95%|█████████▌| 446/468 [00:25<00:01, 16.90it/s]
avg reward: 1.01:  95%|█████████▌| 446/468 [00:25<00:01, 16.90it/s]
avg reward: 1.01:  96%|█████████▋| 451/468 [00:25<00:00, 17.26it/s]
avg reward: 1.01:  96%|█████████▋| 451/468 [00:25<00:00, 17.26it/s]
avg reward: 1.01:  96%|█████████▋| 451/468 [00:25<00:00, 17.26it/s]
avg reward: 1.01:  96%|█████████▋| 451/468 [00:25<00:00, 17.26it/s]
avg reward: 1.01:  96%|█████████▋| 451/468 [00:25<00:00, 17.26it/s]
avg reward: 1.01:  96%|█████████▋| 451/468 [00:26<00:00, 17.26it/s]
avg reward: 1.01:  97%|█████████▋| 456/468 [00:26<00:00, 17.68it/s]
avg reward: 1.01:  97%|█████████▋| 456/468 [00:26<00:00, 17.68it/s]
avg reward: 1.01:  97%|█████████▋| 456/468 [00:26<00:00, 17.68it/s]
avg reward: 1.01:  97%|█████████▋| 456/468 [00:26<00:00, 17.68it/s]
avg reward: 1.01:  97%|█████████▋| 456/468 [00:26<00:00, 17.68it/s]
avg reward: 1.01:  97%|█████████▋| 456/468 [00:26<00:00, 17.68it/s]
avg reward: 1.01:  99%|█████████▊| 461/468 [00:26<00:00, 18.27it/s]
avg reward: 1.01:  99%|█████████▊| 461/468 [00:26<00:00, 18.27it/s]
avg reward: 1.01:  99%|█████████▊| 461/468 [00:26<00:00, 18.27it/s]
avg reward: 1.01:  99%|█████████▊| 461/468 [00:26<00:00, 18.27it/s]
avg reward: 1.01:  99%|█████████▊| 461/468 [00:26<00:00, 18.27it/s]
avg reward: 1.01:  99%|█████████▊| 461/468 [00:26<00:00, 18.27it/s]
avg reward: 1.01: 100%|█████████▉| 466/468 [00:26<00:00, 18.53it/s]
avg reward: 1.01: 100%|█████████▉| 466/468 [00:26<00:00, 18.53it/s]
avg reward: 1.01: 100%|██████████| 468/468 [00:26<00:00, 17.61it/s]

  0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.953125:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.96875:   0%|          | 0/79 [00:00<?, ?it/s] 
Val Acc: 0.9765625:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.9765625:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.9765625:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.9765625:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.9765625:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.9765625:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9775390625:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9791666666666666:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9796875:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]         
Val Acc: 0.9808238636363636:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9811197916666666:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9807692307692307:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9810267857142857:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9817708333333334:   9%|▉         | 7/79 [00:00<00:01, 63.95it/s]
Val Acc: 0.9817708333333334:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]
Val Acc: 0.98046875:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]        
Val Acc: 0.9797794117647058:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]
Val Acc: 0.9791666666666666:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]
Val Acc: 0.9790296052631579:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]
Val Acc: 0.977734375:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]       
Val Acc: 0.9780505952380952:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]
Val Acc: 0.9783380681818182:  19%|█▉        | 15/79 [00:00<00:00, 66.50it/s]
Val Acc: 0.9783380681818182:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]
Val Acc: 0.9792798913043478:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]
Val Acc: 0.9794921875:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]      
Val Acc: 0.9796875:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]   
Val Acc: 0.9792668269230769:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]
Val Acc: 0.9797453703703703:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]
Val Acc: 0.9801897321428571:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]
Val Acc: 0.9792564655172413:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]
Val Acc: 0.9783854166666667:  28%|██▊       | 22/79 [00:00<00:00, 64.27it/s]
Val Acc: 0.9783854166666667:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]
Val Acc: 0.9780745967741935:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]
Val Acc: 0.97802734375:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]     
Val Acc: 0.9779829545454546:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]
Val Acc: 0.9781709558823529:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]
Val Acc: 0.978125:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]          
Val Acc: 0.9787326388888888:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]
Val Acc: 0.9782516891891891:  38%|███▊      | 30/79 [00:00<00:00, 66.09it/s]
Val Acc: 0.9782516891891891:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]
Val Acc: 0.9784128289473685:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]
Val Acc: 0.9783653846153846:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]
Val Acc: 0.9783203125:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]      
Val Acc: 0.9784679878048781:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]
Val Acc: 0.9787946428571429:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]
Val Acc: 0.9789244186046512:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]
Val Acc: 0.9786931818181818:  47%|████▋     | 37/79 [00:00<00:00, 65.96it/s]
Val Acc: 0.9786931818181818:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.9789930555555556:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.9787703804347826:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.9783909574468085:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.9788411458333334:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.9789540816326531:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.97890625:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]        
Val Acc: 0.9788602941176471:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.9786658653846154:  56%|█████▌    | 44/79 [00:00<00:00, 65.29it/s]
Val Acc: 0.9786658653846154:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9790683962264151:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9793113425925926:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9795454545454545:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9796316964285714:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9799890350877193:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9801993534482759:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9804025423728814:  66%|██████▌   | 52/79 [00:00<00:00, 66.94it/s]
Val Acc: 0.9804025423728814:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]
Val Acc: 0.9802083333333333:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]
Val Acc: 0.9801485655737705:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]
Val Acc: 0.9799647177419355:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]
Val Acc: 0.9800347222222222:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]
Val Acc: 0.979736328125:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]    
Val Acc: 0.9800480769230769:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]
Val Acc: 0.9802320075757576:  75%|███████▍  | 59/79 [00:00<00:00, 67.50it/s]
Val Acc: 0.9802320075757576:  84%|████████▎ | 66/79 [00:00<00:00, 67.79it/s]
Val Acc: 0.980410447761194:  84%|████████▎ | 66/79 [00:00<00:00, 67.79it/s] 
Val Acc: 0.9798943014705882:  84%|████████▎ | 66/79 [00:01<00:00, 67.79it/s]
Val Acc: 0.980072463768116:  84%|████████▎ | 66/79 [00:01<00:00, 67.79it/s] 
Val Acc: 0.9801339285714286:  84%|████████▎ | 66/79 [00:01<00:00, 67.79it/s]
Val Acc: 0.9803036971830986:  84%|████████▎ | 66/79 [00:01<00:00, 67.79it/s]
Val Acc: 0.98046875:  84%|████████▎ | 66/79 [00:01<00:00, 67.79it/s]        
Val Acc: 0.9803082191780822:  84%|████████▎ | 66/79 [00:01<00:00, 67.79it/s]
Val Acc: 0.9802576013513513:  84%|████████▎ | 66/79 [00:01<00:00, 67.79it/s]
Val Acc: 0.9802576013513513:  94%|█████████▎| 74/79 [00:01<00:00, 69.26it/s]
Val Acc: 0.9801041666666667:  94%|█████████▎| 74/79 [00:01<00:00, 69.26it/s]
Val Acc: 0.9801603618421053:  94%|█████████▎| 74/79 [00:01<00:00, 69.26it/s]
Val Acc: 0.9799107142857143:  94%|█████████▎| 74/79 [00:01<00:00, 69.26it/s]
Val Acc: 0.9801682692307693:  94%|█████████▎| 74/79 [00:01<00:00, 69.26it/s]
Val Acc: 0.9802: 100%|██████████| 79/79 [00:01<00:00, 67.87it/s]
epoch 0, val_acc: 0.98, avg reward: 1.01: 100%|██████████| 1/1 [00:27<00:00, 27.79s/it]

The resulting architecture is:

mynet.graph
../../_images/output_enas_proxylessnas_ad55b9_21_0.svg

Change the reward trade-off:

reward_fn = lambda metric, net: metric * ((net.avg_latency / net.latency) ** 0.8)
mynet.initialize(force_reinit=True)
scheduler = ENAS_Scheduler(mynet, train_set='mnist',
                           reward_fn=reward_fn, batch_size=128, num_gpus=1,
                           warmup_epochs=0, epochs=1, controller_lr=3e-3,
                           plot_frequency=10, update_arch_frequency=5)
scheduler.run()
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/mxnet/gluon/block.py:656: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  self.collect_params().initialize(init, ctx, verbose, force_reinit)
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/extra/src/autogluon/extra/contrib/enas/enas_scheduler.py:78: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  self.supernet.collect_params().reset_ctx(ctx)
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/extra/src/autogluon/extra/contrib/enas/enas_utils.py:15: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  train_args['trainer'] = gluon.Trainer(net.collect_params(), 'sgd', optimizer_params)
  0%|          | 0/1 [00:00<?, ?it/s]
  0%|          | 0/468 [00:00<?, ?it/s]/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/mxnet/gluon/block.py:926: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  params = self.collect_params()
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/mxnet/gluon/block.py:682: UserWarning: Parameter batchnorm3_running_var, batchnorm6_running_var, batchnorm19_running_var, batchnorm3_gamma, conv19_weight, batchnorm12_beta, batchnorm13_gamma, conv0_bias, batchnorm18_beta, batchnorm2_running_var, batchnorm20_running_mean, conv13_weight, conv27_weight, conv12_bias, batchnorm6_beta, conv19_bias, conv14_weight, batchnorm18_running_var, conv9_weight, batchnorm21_gamma, conv26_bias, conv29_bias, conv11_bias, batchnorm9_running_var, conv3_weight, batchnorm9_running_mean, batchnorm1_running_mean, conv3_bias, conv25_bias, batchnorm13_running_var, conv20_weight, batchnorm19_gamma, batchnorm16_running_var, conv9_bias, batchnorm7_gamma, conv2_bias, conv1_bias, batchnorm0_running_var, batchnorm1_running_var, batchnorm2_running_mean, batchnorm7_beta, batchnorm6_gamma, conv13_bias, batchnorm12_gamma, batchnorm18_running_mean, batchnorm3_running_mean, batchnorm8_beta, batchnorm0_beta, batchnorm20_gamma, conv12_weight, conv1_weight, conv24_weight, conv11_weight, batchnorm13_running_mean, batchnorm17_gamma, batchnorm6_running_mean, conv20_bias, batchnorm12_running_var, batchnorm8_running_mean, batchnorm20_beta, conv10_bias, batchnorm21_beta, batchnorm8_running_var, conv2_weight, batchnorm1_beta, conv5_weight, conv5_bias, batchnorm17_beta, batchnorm1_gamma, conv4_bias, batchnorm17_running_mean, batchnorm8_gamma, batchnorm3_beta, batchnorm0_running_mean, conv26_weight, batchnorm13_beta, batchnorm2_gamma, batchnorm0_gamma, batchnorm12_running_mean, batchnorm16_running_mean, conv28_weight, batchnorm17_running_var, conv29_weight, conv4_weight, batchnorm7_running_mean, batchnorm9_gamma, conv18_bias, batchnorm18_gamma, batchnorm21_running_mean, batchnorm20_running_var, conv28_bias, batchnorm19_running_mean, batchnorm9_beta, conv24_bias, batchnorm16_gamma, conv25_weight, batchnorm19_beta, batchnorm7_running_var, conv18_weight, conv10_weight, batchnorm21_running_var, batchnorm2_beta, conv14_bias, conv0_weight, conv27_bias, batchnorm16_beta is not used by any computation. Is this intended?
  out = self.forward(*args)

avg reward: 0.10:   0%|          | 0/468 [00:00<?, ?it/s]
avg reward: 0.10:   0%|          | 1/468 [00:00<02:01,  3.85it/s]
avg reward: 0.10:   0%|          | 1/468 [00:00<02:01,  3.85it/s]
avg reward: 0.10:   0%|          | 1/468 [00:00<02:01,  3.85it/s]
avg reward: 0.10:   0%|          | 1/468 [00:00<02:01,  3.85it/s]
avg reward: 0.10:   0%|          | 1/468 [00:00<02:01,  3.85it/s]
avg reward: 0.10:   1%|          | 5/468 [00:00<00:28, 16.01it/s]
avg reward: 0.12:   1%|          | 5/468 [00:00<00:28, 16.01it/s]
avg reward: 0.12:   1%|          | 5/468 [00:00<00:28, 16.01it/s]
avg reward: 0.12:   1%|          | 5/468 [00:00<00:28, 16.01it/s]
avg reward: 0.12:   2%|▏         | 8/468 [00:00<00:31, 14.75it/s]
avg reward: 0.12:   2%|▏         | 8/468 [00:00<00:31, 14.75it/s]
avg reward: 0.12:   2%|▏         | 8/468 [00:00<00:31, 14.75it/s]
avg reward: 0.12:   2%|▏         | 8/468 [00:00<00:31, 14.75it/s]
avg reward: 0.12:   2%|▏         | 11/468 [00:00<00:32, 14.09it/s]
avg reward: 0.12:   2%|▏         | 11/468 [00:00<00:32, 14.09it/s]
avg reward: 0.12:   2%|▏         | 11/468 [00:00<00:32, 14.09it/s]
avg reward: 0.12:   2%|▏         | 11/468 [00:00<00:32, 14.09it/s]
avg reward: 0.12:   2%|▏         | 11/468 [00:00<00:32, 14.09it/s]
avg reward: 0.12:   2%|▏         | 11/468 [00:01<00:32, 14.09it/s]
avg reward: 0.12:   3%|▎         | 16/468 [00:01<00:27, 16.18it/s]
avg reward: 0.12:   3%|▎         | 16/468 [00:01<00:27, 16.18it/s]
avg reward: 0.12:   3%|▎         | 16/468 [00:01<00:27, 16.18it/s]
avg reward: 0.12:   3%|▎         | 16/468 [00:01<00:27, 16.18it/s]
avg reward: 0.12:   3%|▎         | 16/468 [00:01<00:27, 16.18it/s]
avg reward: 0.15:   3%|▎         | 16/468 [00:01<00:27, 16.18it/s]
avg reward: 0.15:   4%|▍         | 21/468 [00:01<00:26, 17.01it/s]
avg reward: 0.15:   4%|▍         | 21/468 [00:01<00:26, 17.01it/s]
avg reward: 0.15:   4%|▍         | 21/468 [00:01<00:26, 17.01it/s]
avg reward: 0.15:   4%|▍         | 21/468 [00:01<00:26, 17.01it/s]
avg reward: 0.15:   4%|▍         | 21/468 [00:01<00:26, 17.01it/s]
avg reward: 0.21:   4%|▍         | 21/468 [00:01<00:26, 17.01it/s]
avg reward: 0.21:   6%|▌         | 26/468 [00:01<00:25, 17.61it/s]
avg reward: 0.21:   6%|▌         | 26/468 [00:01<00:25, 17.61it/s]
avg reward: 0.21:   6%|▌         | 26/468 [00:01<00:25, 17.61it/s]
avg reward: 0.21:   6%|▌         | 26/468 [00:01<00:25, 17.61it/s]
avg reward: 0.21:   6%|▌         | 26/468 [00:01<00:25, 17.61it/s]
avg reward: 0.30:   6%|▌         | 26/468 [00:01<00:25, 17.61it/s]
avg reward: 0.30:   7%|▋         | 31/468 [00:01<00:24, 18.07it/s]
avg reward: 0.30:   7%|▋         | 31/468 [00:01<00:24, 18.07it/s]
avg reward: 0.30:   7%|▋         | 31/468 [00:01<00:24, 18.07it/s]
avg reward: 0.30:   7%|▋         | 31/468 [00:01<00:24, 18.07it/s]
avg reward: 0.30:   7%|▋         | 31/468 [00:01<00:24, 18.07it/s]
avg reward: 0.37:   7%|▋         | 31/468 [00:02<00:24, 18.07it/s]
avg reward: 0.37:   8%|▊         | 36/468 [00:02<00:23, 18.26it/s]
avg reward: 0.37:   8%|▊         | 36/468 [00:02<00:23, 18.26it/s]
avg reward: 0.37:   8%|▊         | 36/468 [00:02<00:23, 18.26it/s]
avg reward: 0.37:   8%|▊         | 36/468 [00:02<00:23, 18.26it/s]
avg reward: 0.37:   8%|▊         | 36/468 [00:02<00:23, 18.26it/s]
avg reward: 0.50:   8%|▊         | 36/468 [00:02<00:23, 18.26it/s]
avg reward: 0.50:   9%|▉         | 41/468 [00:02<00:23, 18.15it/s]
avg reward: 0.50:   9%|▉         | 41/468 [00:02<00:23, 18.15it/s]
avg reward: 0.50:   9%|▉         | 41/468 [00:02<00:23, 18.15it/s]
avg reward: 0.50:   9%|▉         | 41/468 [00:02<00:23, 18.15it/s]
avg reward: 0.50:   9%|▉         | 41/468 [00:02<00:23, 18.15it/s]
avg reward: 0.52:   9%|▉         | 41/468 [00:02<00:23, 18.15it/s]
avg reward: 0.52:  10%|▉         | 46/468 [00:02<00:22, 18.38it/s]
avg reward: 0.52:  10%|▉         | 46/468 [00:02<00:22, 18.38it/s]
avg reward: 0.52:  10%|▉         | 46/468 [00:02<00:22, 18.38it/s]
avg reward: 0.52:  10%|▉         | 46/468 [00:02<00:22, 18.38it/s]
avg reward: 0.52:  10%|▉         | 46/468 [00:02<00:22, 18.38it/s]
avg reward: 0.51:  10%|▉         | 46/468 [00:02<00:22, 18.38it/s]
avg reward: 0.51:  11%|█         | 51/468 [00:02<00:22, 18.39it/s]
avg reward: 0.51:  11%|█         | 51/468 [00:03<00:22, 18.39it/s]
avg reward: 0.51:  11%|█         | 51/468 [00:03<00:22, 18.39it/s]
avg reward: 0.51:  11%|█         | 51/468 [00:03<00:22, 18.39it/s]
avg reward: 0.51:  11%|█         | 51/468 [00:03<00:22, 18.39it/s]
avg reward: 0.56:  11%|█         | 51/468 [00:03<00:22, 18.39it/s]
avg reward: 0.56:  12%|█▏        | 56/468 [00:03<00:22, 18.08it/s]
avg reward: 0.56:  12%|█▏        | 56/468 [00:03<00:22, 18.08it/s]
avg reward: 0.56:  12%|█▏        | 56/468 [00:03<00:22, 18.08it/s]
avg reward: 0.56:  12%|█▏        | 56/468 [00:03<00:22, 18.08it/s]
avg reward: 0.56:  12%|█▏        | 56/468 [00:03<00:22, 18.08it/s]
avg reward: 0.58:  12%|█▏        | 56/468 [00:03<00:22, 18.08it/s]
avg reward: 0.58:  13%|█▎        | 61/468 [00:03<00:22, 18.06it/s]
avg reward: 0.58:  13%|█▎        | 61/468 [00:03<00:22, 18.06it/s]
avg reward: 0.58:  13%|█▎        | 61/468 [00:03<00:22, 18.06it/s]
avg reward: 0.58:  13%|█▎        | 61/468 [00:03<00:22, 18.06it/s]
avg reward: 0.58:  13%|█▎        | 61/468 [00:03<00:22, 18.06it/s]
avg reward: 0.64:  13%|█▎        | 61/468 [00:03<00:22, 18.06it/s]
avg reward: 0.64:  14%|█▍        | 66/468 [00:03<00:22, 17.60it/s]
avg reward: 0.64:  14%|█▍        | 66/468 [00:03<00:22, 17.60it/s]
avg reward: 0.64:  14%|█▍        | 66/468 [00:03<00:22, 17.60it/s]
avg reward: 0.64:  14%|█▍        | 66/468 [00:03<00:22, 17.60it/s]
avg reward: 0.64:  14%|█▍        | 66/468 [00:03<00:22, 17.60it/s]
avg reward: 0.62:  14%|█▍        | 66/468 [00:04<00:22, 17.60it/s]
avg reward: 0.62:  15%|█▌        | 71/468 [00:04<00:22, 17.86it/s]
avg reward: 0.62:  15%|█▌        | 71/468 [00:04<00:22, 17.86it/s]
avg reward: 0.62:  15%|█▌        | 71/468 [00:04<00:22, 17.86it/s]
avg reward: 0.62:  15%|█▌        | 71/468 [00:04<00:22, 17.86it/s]
avg reward: 0.62:  15%|█▌        | 71/468 [00:04<00:22, 17.86it/s]
avg reward: 0.62:  16%|█▌        | 75/468 [00:04<00:18, 20.76it/s]
avg reward: 0.66:  16%|█▌        | 75/468 [00:04<00:18, 20.76it/s]
avg reward: 0.66:  16%|█▌        | 75/468 [00:04<00:18, 20.76it/s]
avg reward: 0.66:  16%|█▌        | 75/468 [00:04<00:18, 20.76it/s]
avg reward: 0.66:  17%|█▋        | 78/468 [00:04<00:21, 18.38it/s]
avg reward: 0.66:  17%|█▋        | 78/468 [00:04<00:21, 18.38it/s]
avg reward: 0.66:  17%|█▋        | 78/468 [00:04<00:21, 18.38it/s]
avg reward: 0.72:  17%|█▋        | 78/468 [00:04<00:21, 18.38it/s]
avg reward: 0.72:  17%|█▋        | 81/468 [00:04<00:22, 17.25it/s]
avg reward: 0.72:  17%|█▋        | 81/468 [00:04<00:22, 17.25it/s]
avg reward: 0.72:  17%|█▋        | 81/468 [00:04<00:22, 17.25it/s]
avg reward: 0.72:  17%|█▋        | 81/468 [00:04<00:22, 17.25it/s]
avg reward: 0.72:  17%|█▋        | 81/468 [00:04<00:22, 17.25it/s]
avg reward: 0.78:  17%|█▋        | 81/468 [00:04<00:22, 17.25it/s]
avg reward: 0.78:  18%|█▊        | 86/468 [00:04<00:21, 17.91it/s]
avg reward: 0.78:  18%|█▊        | 86/468 [00:04<00:21, 17.91it/s]
avg reward: 0.78:  18%|█▊        | 86/468 [00:04<00:21, 17.91it/s]
avg reward: 0.78:  18%|█▊        | 86/468 [00:04<00:21, 17.91it/s]
avg reward: 0.78:  18%|█▊        | 86/468 [00:04<00:21, 17.91it/s]
avg reward: 0.79:  18%|█▊        | 86/468 [00:05<00:21, 17.91it/s]
avg reward: 0.79:  19%|█▉        | 91/468 [00:05<00:20, 18.08it/s]
avg reward: 0.79:  19%|█▉        | 91/468 [00:05<00:20, 18.08it/s]
avg reward: 0.79:  19%|█▉        | 91/468 [00:05<00:20, 18.08it/s]
avg reward: 0.79:  19%|█▉        | 91/468 [00:05<00:20, 18.08it/s]
avg reward: 0.79:  19%|█▉        | 91/468 [00:05<00:20, 18.08it/s]
avg reward: 0.83:  19%|█▉        | 91/468 [00:05<00:20, 18.08it/s]
avg reward: 0.83:  21%|██        | 96/468 [00:05<00:20, 18.16it/s]
avg reward: 0.83:  21%|██        | 96/468 [00:05<00:20, 18.16it/s]
avg reward: 0.83:  21%|██        | 96/468 [00:05<00:20, 18.16it/s]
avg reward: 0.83:  21%|██        | 96/468 [00:05<00:20, 18.16it/s]
avg reward: 0.83:  21%|██        | 96/468 [00:05<00:20, 18.16it/s]
avg reward: 0.83:  21%|██▏       | 100/468 [00:05<00:17, 21.13it/s]
avg reward: 0.88:  21%|██▏       | 100/468 [00:05<00:17, 21.13it/s]
avg reward: 0.88:  21%|██▏       | 100/468 [00:05<00:17, 21.13it/s]
avg reward: 0.88:  21%|██▏       | 100/468 [00:05<00:17, 21.13it/s]
avg reward: 0.88:  22%|██▏       | 103/468 [00:05<00:19, 18.47it/s]
avg reward: 0.88:  22%|██▏       | 103/468 [00:05<00:19, 18.47it/s]
avg reward: 0.88:  22%|██▏       | 103/468 [00:05<00:19, 18.47it/s]
avg reward: 0.92:  22%|██▏       | 103/468 [00:06<00:19, 18.47it/s]
avg reward: 0.92:  23%|██▎       | 106/468 [00:06<00:21, 17.02it/s]
avg reward: 0.92:  23%|██▎       | 106/468 [00:06<00:21, 17.02it/s]
avg reward: 0.92:  23%|██▎       | 106/468 [00:06<00:21, 17.02it/s]
avg reward: 0.92:  23%|██▎       | 106/468 [00:06<00:21, 17.02it/s]
avg reward: 0.92:  23%|██▎       | 106/468 [00:06<00:21, 17.02it/s]
avg reward: 0.93:  23%|██▎       | 106/468 [00:06<00:21, 17.02it/s]
avg reward: 0.93:  24%|██▎       | 111/468 [00:06<00:19, 18.12it/s]
avg reward: 0.93:  24%|██▎       | 111/468 [00:06<00:19, 18.12it/s]
avg reward: 0.93:  24%|██▎       | 111/468 [00:06<00:19, 18.12it/s]
avg reward: 0.93:  24%|██▎       | 111/468 [00:06<00:19, 18.12it/s]
avg reward: 0.93:  24%|██▎       | 111/468 [00:06<00:19, 18.12it/s]
avg reward: 0.94:  24%|██▎       | 111/468 [00:06<00:19, 18.12it/s]
avg reward: 0.94:  25%|██▍       | 116/468 [00:06<00:19, 18.19it/s]
avg reward: 0.94:  25%|██▍       | 116/468 [00:06<00:19, 18.19it/s]
avg reward: 0.94:  25%|██▍       | 116/468 [00:06<00:19, 18.19it/s]
avg reward: 0.94:  25%|██▍       | 116/468 [00:06<00:19, 18.19it/s]
avg reward: 0.94:  25%|██▍       | 116/468 [00:06<00:19, 18.19it/s]
avg reward: 0.92:  25%|██▍       | 116/468 [00:06<00:19, 18.19it/s]
avg reward: 0.92:  26%|██▌       | 121/468 [00:06<00:19, 18.06it/s]
avg reward: 0.92:  26%|██▌       | 121/468 [00:06<00:19, 18.06it/s]
avg reward: 0.92:  26%|██▌       | 121/468 [00:06<00:19, 18.06it/s]
avg reward: 0.92:  26%|██▌       | 121/468 [00:06<00:19, 18.06it/s]
avg reward: 0.92:  26%|██▌       | 121/468 [00:06<00:19, 18.06it/s]
avg reward: 0.92:  26%|██▌       | 121/468 [00:07<00:19, 18.06it/s]
avg reward: 0.92:  27%|██▋       | 126/468 [00:07<00:18, 18.25it/s]
avg reward: 0.92:  27%|██▋       | 126/468 [00:07<00:18, 18.25it/s]
avg reward: 0.92:  27%|██▋       | 126/468 [00:07<00:18, 18.25it/s]
avg reward: 0.92:  27%|██▋       | 126/468 [00:07<00:18, 18.25it/s]
avg reward: 0.92:  27%|██▋       | 126/468 [00:07<00:18, 18.25it/s]
avg reward: 0.92:  28%|██▊       | 130/468 [00:07<00:15, 21.30it/s]
avg reward: 0.91:  28%|██▊       | 130/468 [00:07<00:15, 21.30it/s]
avg reward: 0.91:  28%|██▊       | 130/468 [00:07<00:15, 21.30it/s]
avg reward: 0.91:  28%|██▊       | 130/468 [00:07<00:15, 21.30it/s]
avg reward: 0.91:  28%|██▊       | 133/468 [00:07<00:17, 18.71it/s]
avg reward: 0.91:  28%|██▊       | 133/468 [00:07<00:17, 18.71it/s]
avg reward: 0.91:  28%|██▊       | 133/468 [00:07<00:17, 18.71it/s]
avg reward: 0.91:  28%|██▊       | 133/468 [00:07<00:17, 18.71it/s]
avg reward: 0.91:  29%|██▉       | 136/468 [00:07<00:19, 17.04it/s]
avg reward: 0.91:  29%|██▉       | 136/468 [00:07<00:19, 17.04it/s]
avg reward: 0.91:  29%|██▉       | 136/468 [00:07<00:19, 17.04it/s]
avg reward: 0.91:  29%|██▉       | 136/468 [00:07<00:19, 17.04it/s]
avg reward: 0.91:  29%|██▉       | 136/468 [00:07<00:19, 17.04it/s]
avg reward: 0.91:  30%|██▉       | 140/468 [00:07<00:15, 20.71it/s]
avg reward: 0.95:  30%|██▉       | 140/468 [00:07<00:15, 20.71it/s]
avg reward: 0.95:  30%|██▉       | 140/468 [00:07<00:15, 20.71it/s]
avg reward: 0.95:  30%|██▉       | 140/468 [00:07<00:15, 20.71it/s]
avg reward: 0.95:  31%|███       | 143/468 [00:07<00:18, 17.94it/s]
avg reward: 0.95:  31%|███       | 143/468 [00:07<00:18, 17.94it/s]
avg reward: 0.95:  31%|███       | 143/468 [00:08<00:18, 17.94it/s]
avg reward: 0.98:  31%|███       | 143/468 [00:08<00:18, 17.94it/s]
avg reward: 0.98:  31%|███       | 146/468 [00:08<00:19, 16.36it/s]
avg reward: 0.98:  31%|███       | 146/468 [00:08<00:19, 16.36it/s]
avg reward: 0.98:  31%|███       | 146/468 [00:08<00:19, 16.36it/s]
avg reward: 0.98:  31%|███       | 146/468 [00:08<00:19, 16.36it/s]
avg reward: 0.98:  31%|███       | 146/468 [00:08<00:19, 16.36it/s]
avg reward: 0.97:  31%|███       | 146/468 [00:08<00:19, 16.36it/s]
avg reward: 0.97:  32%|███▏      | 151/468 [00:08<00:18, 17.19it/s]
avg reward: 0.97:  32%|███▏      | 151/468 [00:08<00:18, 17.19it/s]
avg reward: 0.97:  32%|███▏      | 151/468 [00:08<00:18, 17.19it/s]
avg reward: 0.97:  32%|███▏      | 151/468 [00:08<00:18, 17.19it/s]
avg reward: 0.97:  32%|███▏      | 151/468 [00:08<00:18, 17.19it/s]
avg reward: 0.96:  32%|███▏      | 151/468 [00:08<00:18, 17.19it/s]
avg reward: 0.96:  33%|███▎      | 156/468 [00:08<00:18, 17.17it/s]
avg reward: 0.96:  33%|███▎      | 156/468 [00:08<00:18, 17.17it/s]
avg reward: 0.96:  33%|███▎      | 156/468 [00:08<00:18, 17.17it/s]
avg reward: 0.96:  33%|███▎      | 156/468 [00:08<00:18, 17.17it/s]
avg reward: 0.96:  33%|███▎      | 156/468 [00:08<00:18, 17.17it/s]
avg reward: 0.96:  34%|███▍      | 160/468 [00:08<00:15, 20.50it/s]
avg reward: 0.96:  34%|███▍      | 160/468 [00:09<00:15, 20.50it/s]
avg reward: 0.96:  34%|███▍      | 160/468 [00:09<00:15, 20.50it/s]
avg reward: 0.96:  34%|███▍      | 160/468 [00:09<00:15, 20.50it/s]
avg reward: 0.96:  35%|███▍      | 163/468 [00:09<00:16, 18.38it/s]
avg reward: 0.96:  35%|███▍      | 163/468 [00:09<00:16, 18.38it/s]
avg reward: 0.96:  35%|███▍      | 163/468 [00:09<00:16, 18.38it/s]
avg reward: 0.97:  35%|███▍      | 163/468 [00:09<00:16, 18.38it/s]
avg reward: 0.97:  35%|███▌      | 166/468 [00:09<00:17, 17.08it/s]
avg reward: 0.97:  35%|███▌      | 166/468 [00:09<00:17, 17.08it/s]
avg reward: 0.97:  35%|███▌      | 166/468 [00:09<00:17, 17.08it/s]
avg reward: 0.97:  35%|███▌      | 166/468 [00:09<00:17, 17.08it/s]
avg reward: 0.97:  35%|███▌      | 166/468 [00:09<00:17, 17.08it/s]
avg reward: 1.00:  35%|███▌      | 166/468 [00:09<00:17, 17.08it/s]
avg reward: 1.00:  37%|███▋      | 171/468 [00:09<00:17, 17.03it/s]
avg reward: 1.00:  37%|███▋      | 171/468 [00:09<00:17, 17.03it/s]
avg reward: 1.00:  37%|███▋      | 171/468 [00:09<00:17, 17.03it/s]
avg reward: 1.00:  37%|███▋      | 171/468 [00:09<00:17, 17.03it/s]
avg reward: 1.00:  37%|███▋      | 171/468 [00:09<00:17, 17.03it/s]
avg reward: 1.00:  37%|███▋      | 175/468 [00:09<00:14, 20.22it/s]
avg reward: 1.02:  37%|███▋      | 175/468 [00:09<00:14, 20.22it/s]
avg reward: 1.02:  37%|███▋      | 175/468 [00:09<00:14, 20.22it/s]
avg reward: 1.02:  37%|███▋      | 175/468 [00:09<00:14, 20.22it/s]
avg reward: 1.02:  38%|███▊      | 178/468 [00:09<00:15, 18.24it/s]
avg reward: 1.02:  38%|███▊      | 178/468 [00:09<00:15, 18.24it/s]
avg reward: 1.02:  38%|███▊      | 178/468 [00:09<00:15, 18.24it/s]
avg reward: 0.99:  38%|███▊      | 178/468 [00:10<00:15, 18.24it/s]
avg reward: 0.99:  39%|███▊      | 181/468 [00:10<00:17, 16.78it/s]
avg reward: 0.99:  39%|███▊      | 181/468 [00:10<00:17, 16.78it/s]
avg reward: 0.99:  39%|███▊      | 181/468 [00:10<00:17, 16.78it/s]
avg reward: 0.99:  39%|███▊      | 181/468 [00:10<00:17, 16.78it/s]
avg reward: 0.99:  39%|███▊      | 181/468 [00:10<00:17, 16.78it/s]
avg reward: 1.00:  39%|███▊      | 181/468 [00:10<00:17, 16.78it/s]
avg reward: 1.00:  40%|███▉      | 186/468 [00:10<00:16, 17.49it/s]
avg reward: 1.00:  40%|███▉      | 186/468 [00:10<00:16, 17.49it/s]
avg reward: 1.00:  40%|███▉      | 186/468 [00:10<00:16, 17.49it/s]
avg reward: 1.00:  40%|███▉      | 186/468 [00:10<00:16, 17.49it/s]
avg reward: 1.00:  40%|███▉      | 186/468 [00:10<00:16, 17.49it/s]
avg reward: 0.98:  40%|███▉      | 186/468 [00:10<00:16, 17.49it/s]
avg reward: 0.98:  41%|████      | 191/468 [00:10<00:15, 17.77it/s]
avg reward: 0.98:  41%|████      | 191/468 [00:10<00:15, 17.77it/s]
avg reward: 0.98:  41%|████      | 191/468 [00:10<00:15, 17.77it/s]
avg reward: 0.98:  41%|████      | 191/468 [00:10<00:15, 17.77it/s]
avg reward: 0.98:  41%|████      | 191/468 [00:10<00:15, 17.77it/s]
avg reward: 0.96:  41%|████      | 191/468 [00:10<00:15, 17.77it/s]
avg reward: 0.96:  42%|████▏     | 196/468 [00:10<00:15, 18.08it/s]
avg reward: 0.96:  42%|████▏     | 196/468 [00:10<00:15, 18.08it/s]
avg reward: 0.96:  42%|████▏     | 196/468 [00:10<00:15, 18.08it/s]
avg reward: 0.96:  42%|████▏     | 196/468 [00:11<00:15, 18.08it/s]
avg reward: 0.96:  42%|████▏     | 196/468 [00:11<00:15, 18.08it/s]
avg reward: 0.98:  42%|████▏     | 196/468 [00:11<00:15, 18.08it/s]
avg reward: 0.98:  43%|████▎     | 201/468 [00:11<00:14, 18.11it/s]
avg reward: 0.98:  43%|████▎     | 201/468 [00:11<00:14, 18.11it/s]
avg reward: 0.98:  43%|████▎     | 201/468 [00:11<00:14, 18.11it/s]
avg reward: 0.98:  43%|████▎     | 201/468 [00:11<00:14, 18.11it/s]
avg reward: 0.98:  43%|████▎     | 201/468 [00:11<00:14, 18.11it/s]
avg reward: 0.98:  44%|████▍     | 205/468 [00:11<00:12, 20.87it/s]
avg reward: 1.00:  44%|████▍     | 205/468 [00:11<00:12, 20.87it/s]
avg reward: 1.00:  44%|████▍     | 205/468 [00:11<00:12, 20.87it/s]
avg reward: 1.00:  44%|████▍     | 205/468 [00:11<00:12, 20.87it/s]
avg reward: 1.00:  44%|████▍     | 208/468 [00:11<00:14, 18.06it/s]
avg reward: 1.00:  44%|████▍     | 208/468 [00:11<00:14, 18.06it/s]
avg reward: 1.00:  44%|████▍     | 208/468 [00:11<00:14, 18.06it/s]
avg reward: 1.04:  44%|████▍     | 208/468 [00:11<00:14, 18.06it/s]
avg reward: 1.04:  45%|████▌     | 211/468 [00:11<00:15, 16.33it/s]
avg reward: 1.04:  45%|████▌     | 211/468 [00:11<00:15, 16.33it/s]
avg reward: 1.04:  45%|████▌     | 211/468 [00:11<00:15, 16.33it/s]
avg reward: 1.04:  45%|████▌     | 211/468 [00:11<00:15, 16.33it/s]
avg reward: 1.04:  45%|████▌     | 211/468 [00:11<00:15, 16.33it/s]
avg reward: 1.06:  45%|████▌     | 211/468 [00:12<00:15, 16.33it/s]
avg reward: 1.06:  46%|████▌     | 216/468 [00:12<00:14, 16.95it/s]
avg reward: 1.06:  46%|████▌     | 216/468 [00:12<00:14, 16.95it/s]
avg reward: 1.06:  46%|████▌     | 216/468 [00:12<00:14, 16.95it/s]
avg reward: 1.06:  46%|████▌     | 216/468 [00:12<00:14, 16.95it/s]
avg reward: 1.06:  46%|████▌     | 216/468 [00:12<00:14, 16.95it/s]
avg reward: 1.06:  46%|████▌     | 216/468 [00:12<00:14, 16.95it/s]
avg reward: 1.06:  47%|████▋     | 221/468 [00:12<00:13, 17.71it/s]
avg reward: 1.06:  47%|████▋     | 221/468 [00:12<00:13, 17.71it/s]
avg reward: 1.06:  47%|████▋     | 221/468 [00:12<00:13, 17.71it/s]
avg reward: 1.06:  47%|████▋     | 221/468 [00:12<00:13, 17.71it/s]
avg reward: 1.06:  47%|████▋     | 221/468 [00:12<00:13, 17.71it/s]
avg reward: 1.06:  48%|████▊     | 225/468 [00:12<00:11, 20.97it/s]
avg reward: 1.06:  48%|████▊     | 225/468 [00:12<00:11, 20.97it/s]
avg reward: 1.06:  48%|████▊     | 225/468 [00:12<00:11, 20.97it/s]
avg reward: 1.06:  48%|████▊     | 225/468 [00:12<00:11, 20.97it/s]
avg reward: 1.06:  49%|████▊     | 228/468 [00:12<00:13, 17.88it/s]
avg reward: 1.06:  49%|████▊     | 228/468 [00:12<00:13, 17.88it/s]
avg reward: 1.06:  49%|████▊     | 228/468 [00:12<00:13, 17.88it/s]
avg reward: 1.05:  49%|████▊     | 228/468 [00:12<00:13, 17.88it/s]
avg reward: 1.05:  49%|████▉     | 231/468 [00:12<00:14, 16.81it/s]
avg reward: 1.05:  49%|████▉     | 231/468 [00:12<00:14, 16.81it/s]
avg reward: 1.05:  49%|████▉     | 231/468 [00:12<00:14, 16.81it/s]
avg reward: 1.05:  49%|████▉     | 231/468 [00:12<00:14, 16.81it/s]
avg reward: 1.05:  49%|████▉     | 231/468 [00:12<00:14, 16.81it/s]
avg reward: 1.06:  49%|████▉     | 231/468 [00:13<00:14, 16.81it/s]
avg reward: 1.06:  50%|█████     | 236/468 [00:13<00:13, 17.48it/s]
avg reward: 1.06:  50%|█████     | 236/468 [00:13<00:13, 17.48it/s]
avg reward: 1.06:  50%|█████     | 236/468 [00:13<00:13, 17.48it/s]
avg reward: 1.06:  50%|█████     | 236/468 [00:13<00:13, 17.48it/s]
avg reward: 1.06:  50%|█████     | 236/468 [00:13<00:13, 17.48it/s]
avg reward: 1.06:  51%|█████▏    | 240/468 [00:13<00:10, 20.85it/s]
avg reward: 1.08:  51%|█████▏    | 240/468 [00:13<00:10, 20.85it/s]
avg reward: 1.08:  51%|█████▏    | 240/468 [00:13<00:10, 20.85it/s]
avg reward: 1.08:  51%|█████▏    | 240/468 [00:13<00:10, 20.85it/s]
avg reward: 1.08:  52%|█████▏    | 243/468 [00:13<00:12, 17.74it/s]
avg reward: 1.08:  52%|█████▏    | 243/468 [00:13<00:12, 17.74it/s]
avg reward: 1.08:  52%|█████▏    | 243/468 [00:13<00:12, 17.74it/s]
avg reward: 1.10:  52%|█████▏    | 243/468 [00:13<00:12, 17.74it/s]
avg reward: 1.10:  53%|█████▎    | 246/468 [00:13<00:13, 16.53it/s]
avg reward: 1.10:  53%|█████▎    | 246/468 [00:13<00:13, 16.53it/s]
avg reward: 1.10:  53%|█████▎    | 246/468 [00:13<00:13, 16.53it/s]
avg reward: 1.10:  53%|█████▎    | 246/468 [00:13<00:13, 16.53it/s]
avg reward: 1.10:  53%|█████▎    | 246/468 [00:13<00:13, 16.53it/s]
avg reward: 1.10:  53%|█████▎    | 246/468 [00:14<00:13, 16.53it/s]
avg reward: 1.10:  54%|█████▎    | 251/468 [00:14<00:12, 17.24it/s]
avg reward: 1.10:  54%|█████▎    | 251/468 [00:14<00:12, 17.24it/s]
avg reward: 1.10:  54%|█████▎    | 251/468 [00:14<00:12, 17.24it/s]
avg reward: 1.10:  54%|█████▎    | 251/468 [00:14<00:12, 17.24it/s]
avg reward: 1.10:  54%|█████▎    | 251/468 [00:14<00:12, 17.24it/s]
avg reward: 1.10:  54%|█████▎    | 251/468 [00:14<00:12, 17.24it/s]
avg reward: 1.10:  55%|█████▍    | 256/468 [00:14<00:12, 17.34it/s]
avg reward: 1.10:  55%|█████▍    | 256/468 [00:14<00:12, 17.34it/s]
avg reward: 1.10:  55%|█████▍    | 256/468 [00:14<00:12, 17.34it/s]
avg reward: 1.10:  55%|█████▍    | 256/468 [00:14<00:12, 17.34it/s]
avg reward: 1.10:  55%|█████▍    | 256/468 [00:14<00:12, 17.34it/s]
avg reward: 1.10:  55%|█████▍    | 256/468 [00:14<00:12, 17.34it/s]
avg reward: 1.10:  56%|█████▌    | 261/468 [00:14<00:11, 18.22it/s]
avg reward: 1.10:  56%|█████▌    | 261/468 [00:14<00:11, 18.22it/s]
avg reward: 1.10:  56%|█████▌    | 261/468 [00:14<00:11, 18.22it/s]
avg reward: 1.10:  56%|█████▌    | 261/468 [00:14<00:11, 18.22it/s]
avg reward: 1.10:  56%|█████▌    | 261/468 [00:14<00:11, 18.22it/s]
avg reward: 1.14:  56%|█████▌    | 261/468 [00:14<00:11, 18.22it/s]
avg reward: 1.14:  57%|█████▋    | 266/468 [00:14<00:10, 18.53it/s]
avg reward: 1.14:  57%|█████▋    | 266/468 [00:14<00:10, 18.53it/s]
avg reward: 1.14:  57%|█████▋    | 266/468 [00:14<00:10, 18.53it/s]
avg reward: 1.14:  57%|█████▋    | 266/468 [00:14<00:10, 18.53it/s]
avg reward: 1.14:  57%|█████▋    | 266/468 [00:14<00:10, 18.53it/s]
avg reward: 1.16:  57%|█████▋    | 266/468 [00:15<00:10, 18.53it/s]
avg reward: 1.16:  58%|█████▊    | 271/468 [00:15<00:10, 18.30it/s]
avg reward: 1.16:  58%|█████▊    | 271/468 [00:15<00:10, 18.30it/s]
avg reward: 1.16:  58%|█████▊    | 271/468 [00:15<00:10, 18.30it/s]
avg reward: 1.16:  58%|█████▊    | 271/468 [00:15<00:10, 18.30it/s]
avg reward: 1.16:  58%|█████▊    | 271/468 [00:15<00:10, 18.30it/s]
avg reward: 1.16:  59%|█████▉    | 275/468 [00:15<00:09, 21.33it/s]
avg reward: 1.17:  59%|█████▉    | 275/468 [00:15<00:09, 21.33it/s]
avg reward: 1.17:  59%|█████▉    | 275/468 [00:15<00:09, 21.33it/s]
avg reward: 1.17:  59%|█████▉    | 275/468 [00:15<00:09, 21.33it/s]
avg reward: 1.17:  59%|█████▉    | 278/468 [00:15<00:10, 18.92it/s]
avg reward: 1.17:  59%|█████▉    | 278/468 [00:15<00:10, 18.92it/s]
avg reward: 1.17:  59%|█████▉    | 278/468 [00:15<00:10, 18.92it/s]
avg reward: 1.19:  59%|█████▉    | 278/468 [00:15<00:10, 18.92it/s]
avg reward: 1.19:  60%|██████    | 281/468 [00:15<00:10, 17.69it/s]
avg reward: 1.19:  60%|██████    | 281/468 [00:15<00:10, 17.69it/s]
avg reward: 1.19:  60%|██████    | 281/468 [00:15<00:10, 17.69it/s]
avg reward: 1.19:  60%|██████    | 281/468 [00:15<00:10, 17.69it/s]
avg reward: 1.19:  60%|██████    | 281/468 [00:15<00:10, 17.69it/s]
avg reward: 1.21:  60%|██████    | 281/468 [00:15<00:10, 17.69it/s]
avg reward: 1.21:  61%|██████    | 286/468 [00:15<00:10, 17.90it/s]
avg reward: 1.21:  61%|██████    | 286/468 [00:15<00:10, 17.90it/s]
avg reward: 1.21:  61%|██████    | 286/468 [00:15<00:10, 17.90it/s]
avg reward: 1.21:  61%|██████    | 286/468 [00:15<00:10, 17.90it/s]
avg reward: 1.21:  61%|██████    | 286/468 [00:15<00:10, 17.90it/s]
avg reward: 1.21:  62%|██████▏   | 290/468 [00:15<00:08, 21.30it/s]
avg reward: 1.20:  62%|██████▏   | 290/468 [00:16<00:08, 21.30it/s]
avg reward: 1.20:  62%|██████▏   | 290/468 [00:16<00:08, 21.30it/s]
avg reward: 1.20:  62%|██████▏   | 290/468 [00:16<00:08, 21.30it/s]
avg reward: 1.20:  63%|██████▎   | 293/468 [00:16<00:09, 18.60it/s]
avg reward: 1.20:  63%|██████▎   | 293/468 [00:16<00:09, 18.60it/s]
avg reward: 1.20:  63%|██████▎   | 293/468 [00:16<00:09, 18.60it/s]
avg reward: 1.21:  63%|██████▎   | 293/468 [00:16<00:09, 18.60it/s]
avg reward: 1.21:  63%|██████▎   | 296/468 [00:16<00:10, 16.77it/s]
avg reward: 1.21:  63%|██████▎   | 296/468 [00:16<00:10, 16.77it/s]
avg reward: 1.21:  63%|██████▎   | 296/468 [00:16<00:10, 16.77it/s]
avg reward: 1.21:  63%|██████▎   | 296/468 [00:16<00:10, 16.77it/s]
avg reward: 1.21:  63%|██████▎   | 296/468 [00:16<00:10, 16.77it/s]
avg reward: 1.21:  63%|██████▎   | 296/468 [00:16<00:10, 16.77it/s]
avg reward: 1.21:  64%|██████▍   | 301/468 [00:16<00:09, 17.71it/s]
avg reward: 1.21:  64%|██████▍   | 301/468 [00:16<00:09, 17.71it/s]
avg reward: 1.21:  64%|██████▍   | 301/468 [00:16<00:09, 17.71it/s]
avg reward: 1.21:  64%|██████▍   | 301/468 [00:16<00:09, 17.71it/s]
avg reward: 1.21:  64%|██████▍   | 301/468 [00:16<00:09, 17.71it/s]
avg reward: 1.21:  65%|██████▌   | 305/468 [00:16<00:07, 20.90it/s]
avg reward: 1.22:  65%|██████▌   | 305/468 [00:16<00:07, 20.90it/s]
avg reward: 1.22:  65%|██████▌   | 305/468 [00:17<00:07, 20.90it/s]
avg reward: 1.22:  65%|██████▌   | 305/468 [00:17<00:07, 20.90it/s]
avg reward: 1.22:  66%|██████▌   | 308/468 [00:17<00:08, 18.24it/s]
avg reward: 1.22:  66%|██████▌   | 308/468 [00:17<00:08, 18.24it/s]
avg reward: 1.22:  66%|██████▌   | 308/468 [00:17<00:08, 18.24it/s]
avg reward: 1.21:  66%|██████▌   | 308/468 [00:17<00:08, 18.24it/s]
avg reward: 1.21:  66%|██████▋   | 311/468 [00:17<00:09, 16.53it/s]
avg reward: 1.21:  66%|██████▋   | 311/468 [00:17<00:09, 16.53it/s]
avg reward: 1.21:  66%|██████▋   | 311/468 [00:17<00:09, 16.53it/s]
avg reward: 1.21:  66%|██████▋   | 311/468 [00:17<00:09, 16.53it/s]
avg reward: 1.21:  66%|██████▋   | 311/468 [00:17<00:09, 16.53it/s]
avg reward: 1.22:  66%|██████▋   | 311/468 [00:17<00:09, 16.53it/s]
avg reward: 1.22:  68%|██████▊   | 316/468 [00:17<00:08, 16.97it/s]
avg reward: 1.22:  68%|██████▊   | 316/468 [00:17<00:08, 16.97it/s]
avg reward: 1.22:  68%|██████▊   | 316/468 [00:17<00:08, 16.97it/s]
avg reward: 1.22:  68%|██████▊   | 316/468 [00:17<00:08, 16.97it/s]
avg reward: 1.22:  68%|██████▊   | 316/468 [00:17<00:08, 16.97it/s]
avg reward: 1.22:  68%|██████▊   | 320/468 [00:17<00:07, 20.47it/s]
avg reward: 1.22:  68%|██████▊   | 320/468 [00:17<00:07, 20.47it/s]
avg reward: 1.22:  68%|██████▊   | 320/468 [00:17<00:07, 20.47it/s]
avg reward: 1.22:  68%|██████▊   | 320/468 [00:17<00:07, 20.47it/s]
avg reward: 1.22:  69%|██████▉   | 323/468 [00:17<00:08, 18.03it/s]
avg reward: 1.22:  69%|██████▉   | 323/468 [00:17<00:08, 18.03it/s]
avg reward: 1.22:  69%|██████▉   | 323/468 [00:17<00:08, 18.03it/s]
avg reward: 1.22:  69%|██████▉   | 323/468 [00:18<00:08, 18.03it/s]
avg reward: 1.22:  70%|██████▉   | 326/468 [00:18<00:08, 16.67it/s]
avg reward: 1.22:  70%|██████▉   | 326/468 [00:18<00:08, 16.67it/s]
avg reward: 1.22:  70%|██████▉   | 326/468 [00:18<00:08, 16.67it/s]
avg reward: 1.22:  70%|██████▉   | 326/468 [00:18<00:08, 16.67it/s]
avg reward: 1.22:  70%|██████▉   | 326/468 [00:18<00:08, 16.67it/s]
avg reward: 1.22:  70%|██████▉   | 326/468 [00:18<00:08, 16.67it/s]
avg reward: 1.22:  71%|███████   | 331/468 [00:18<00:07, 17.31it/s]
avg reward: 1.22:  71%|███████   | 331/468 [00:18<00:07, 17.31it/s]
avg reward: 1.22:  71%|███████   | 331/468 [00:18<00:07, 17.31it/s]
avg reward: 1.22:  71%|███████   | 331/468 [00:18<00:07, 17.31it/s]
avg reward: 1.22:  71%|███████   | 331/468 [00:18<00:07, 17.31it/s]
avg reward: 1.22:  71%|███████   | 331/468 [00:18<00:07, 17.31it/s]
avg reward: 1.22:  72%|███████▏  | 336/468 [00:18<00:07, 17.65it/s]
avg reward: 1.22:  72%|███████▏  | 336/468 [00:18<00:07, 17.65it/s]
avg reward: 1.22:  72%|███████▏  | 336/468 [00:18<00:07, 17.65it/s]
avg reward: 1.22:  72%|███████▏  | 336/468 [00:18<00:07, 17.65it/s]
avg reward: 1.22:  72%|███████▏  | 336/468 [00:18<00:07, 17.65it/s]
avg reward: 1.22:  72%|███████▏  | 336/468 [00:18<00:07, 17.65it/s]
avg reward: 1.22:  73%|███████▎  | 341/468 [00:18<00:07, 18.00it/s]
avg reward: 1.22:  73%|███████▎  | 341/468 [00:18<00:07, 18.00it/s]
avg reward: 1.22:  73%|███████▎  | 341/468 [00:18<00:07, 18.00it/s]
avg reward: 1.22:  73%|███████▎  | 341/468 [00:18<00:07, 18.00it/s]
avg reward: 1.22:  73%|███████▎  | 341/468 [00:19<00:07, 18.00it/s]
avg reward: 1.22:  73%|███████▎  | 341/468 [00:19<00:07, 18.00it/s]
avg reward: 1.22:  74%|███████▍  | 346/468 [00:19<00:06, 17.92it/s]
avg reward: 1.22:  74%|███████▍  | 346/468 [00:19<00:06, 17.92it/s]
avg reward: 1.22:  74%|███████▍  | 346/468 [00:19<00:06, 17.92it/s]
avg reward: 1.22:  74%|███████▍  | 346/468 [00:19<00:06, 17.92it/s]
avg reward: 1.22:  74%|███████▍  | 346/468 [00:19<00:06, 17.92it/s]
avg reward: 1.22:  75%|███████▍  | 350/468 [00:19<00:05, 21.05it/s]
avg reward: 1.22:  75%|███████▍  | 350/468 [00:19<00:05, 21.05it/s]
avg reward: 1.22:  75%|███████▍  | 350/468 [00:19<00:05, 21.05it/s]
avg reward: 1.22:  75%|███████▍  | 350/468 [00:19<00:05, 21.05it/s]
avg reward: 1.22:  75%|███████▌  | 353/468 [00:19<00:06, 18.48it/s]
avg reward: 1.22:  75%|███████▌  | 353/468 [00:19<00:06, 18.48it/s]
avg reward: 1.22:  75%|███████▌  | 353/468 [00:19<00:06, 18.48it/s]
avg reward: 1.22:  75%|███████▌  | 353/468 [00:19<00:06, 18.48it/s]
avg reward: 1.22:  76%|███████▌  | 356/468 [00:19<00:06, 16.98it/s]
avg reward: 1.22:  76%|███████▌  | 356/468 [00:19<00:06, 16.98it/s]
avg reward: 1.22:  76%|███████▌  | 356/468 [00:19<00:06, 16.98it/s]
avg reward: 1.22:  76%|███████▌  | 356/468 [00:19<00:06, 16.98it/s]
avg reward: 1.22:  76%|███████▌  | 356/468 [00:19<00:06, 16.98it/s]
avg reward: 1.22:  77%|███████▋  | 360/468 [00:19<00:05, 20.64it/s]
avg reward: 1.23:  77%|███████▋  | 360/468 [00:20<00:05, 20.64it/s]
avg reward: 1.23:  77%|███████▋  | 360/468 [00:20<00:05, 20.64it/s]
avg reward: 1.23:  77%|███████▋  | 360/468 [00:20<00:05, 20.64it/s]
avg reward: 1.23:  78%|███████▊  | 363/468 [00:20<00:05, 18.28it/s]
avg reward: 1.23:  78%|███████▊  | 363/468 [00:20<00:05, 18.28it/s]
avg reward: 1.23:  78%|███████▊  | 363/468 [00:20<00:05, 18.28it/s]
avg reward: 1.23:  78%|███████▊  | 363/468 [00:20<00:05, 18.28it/s]
avg reward: 1.23:  78%|███████▊  | 366/468 [00:20<00:06, 16.79it/s]
avg reward: 1.23:  78%|███████▊  | 366/468 [00:20<00:06, 16.79it/s]
avg reward: 1.23:  78%|███████▊  | 366/468 [00:20<00:06, 16.79it/s]
avg reward: 1.23:  78%|███████▊  | 366/468 [00:20<00:06, 16.79it/s]
avg reward: 1.23:  78%|███████▊  | 366/468 [00:20<00:06, 16.79it/s]
avg reward: 1.23:  78%|███████▊  | 366/468 [00:20<00:06, 16.79it/s]
avg reward: 1.23:  79%|███████▉  | 371/468 [00:20<00:05, 17.06it/s]
avg reward: 1.23:  79%|███████▉  | 371/468 [00:20<00:05, 17.06it/s]
avg reward: 1.23:  79%|███████▉  | 371/468 [00:20<00:05, 17.06it/s]
avg reward: 1.23:  79%|███████▉  | 371/468 [00:20<00:05, 17.06it/s]
avg reward: 1.23:  79%|███████▉  | 371/468 [00:20<00:05, 17.06it/s]
avg reward: 1.23:  79%|███████▉  | 371/468 [00:20<00:05, 17.06it/s]
avg reward: 1.23:  80%|████████  | 376/468 [00:20<00:05, 17.51it/s]
avg reward: 1.23:  80%|████████  | 376/468 [00:20<00:05, 17.51it/s]
avg reward: 1.23:  80%|████████  | 376/468 [00:20<00:05, 17.51it/s]
avg reward: 1.23:  80%|████████  | 376/468 [00:20<00:05, 17.51it/s]
avg reward: 1.23:  80%|████████  | 376/468 [00:20<00:05, 17.51it/s]
avg reward: 1.23:  81%|████████  | 380/468 [00:20<00:04, 20.90it/s]
avg reward: 1.23:  81%|████████  | 380/468 [00:21<00:04, 20.90it/s]
avg reward: 1.23:  81%|████████  | 380/468 [00:21<00:04, 20.90it/s]
avg reward: 1.23:  81%|████████  | 380/468 [00:21<00:04, 20.90it/s]
avg reward: 1.23:  82%|████████▏ | 383/468 [00:21<00:04, 17.98it/s]
avg reward: 1.23:  82%|████████▏ | 383/468 [00:21<00:04, 17.98it/s]
avg reward: 1.23:  82%|████████▏ | 383/468 [00:21<00:04, 17.98it/s]
avg reward: 1.23:  82%|████████▏ | 383/468 [00:21<00:04, 17.98it/s]
avg reward: 1.23:  82%|████████▏ | 386/468 [00:21<00:04, 16.43it/s]
avg reward: 1.23:  82%|████████▏ | 386/468 [00:21<00:04, 16.43it/s]
avg reward: 1.23:  82%|████████▏ | 386/468 [00:21<00:04, 16.43it/s]
avg reward: 1.23:  82%|████████▏ | 386/468 [00:21<00:04, 16.43it/s]
avg reward: 1.23:  82%|████████▏ | 386/468 [00:21<00:04, 16.43it/s]
avg reward: 1.23:  82%|████████▏ | 386/468 [00:21<00:04, 16.43it/s]
avg reward: 1.23:  84%|████████▎ | 391/468 [00:21<00:04, 17.17it/s]
avg reward: 1.23:  84%|████████▎ | 391/468 [00:21<00:04, 17.17it/s]
avg reward: 1.23:  84%|████████▎ | 391/468 [00:21<00:04, 17.17it/s]
avg reward: 1.23:  84%|████████▎ | 391/468 [00:21<00:04, 17.17it/s]
avg reward: 1.23:  84%|████████▎ | 391/468 [00:21<00:04, 17.17it/s]
avg reward: 1.23:  84%|████████▍ | 395/468 [00:21<00:03, 20.62it/s]
avg reward: 1.23:  84%|████████▍ | 395/468 [00:21<00:03, 20.62it/s]
avg reward: 1.23:  84%|████████▍ | 395/468 [00:21<00:03, 20.62it/s]
avg reward: 1.23:  84%|████████▍ | 395/468 [00:22<00:03, 20.62it/s]
avg reward: 1.23:  85%|████████▌ | 398/468 [00:22<00:03, 18.32it/s]
avg reward: 1.23:  85%|████████▌ | 398/468 [00:22<00:03, 18.32it/s]
avg reward: 1.23:  85%|████████▌ | 398/468 [00:22<00:03, 18.32it/s]
avg reward: 1.23:  85%|████████▌ | 398/468 [00:22<00:03, 18.32it/s]
avg reward: 1.23:  86%|████████▌ | 401/468 [00:22<00:03, 17.01it/s]
avg reward: 1.23:  86%|████████▌ | 401/468 [00:22<00:03, 17.01it/s]
avg reward: 1.23:  86%|████████▌ | 401/468 [00:22<00:03, 17.01it/s]
avg reward: 1.23:  86%|████████▌ | 401/468 [00:22<00:03, 17.01it/s]
avg reward: 1.23:  86%|████████▌ | 401/468 [00:22<00:03, 17.01it/s]
avg reward: 1.23:  86%|████████▌ | 401/468 [00:22<00:03, 17.01it/s]
avg reward: 1.23:  87%|████████▋ | 406/468 [00:22<00:03, 17.53it/s]
avg reward: 1.23:  87%|████████▋ | 406/468 [00:22<00:03, 17.53it/s]
avg reward: 1.23:  87%|████████▋ | 406/468 [00:22<00:03, 17.53it/s]
avg reward: 1.23:  87%|████████▋ | 406/468 [00:22<00:03, 17.53it/s]
avg reward: 1.23:  87%|████████▋ | 406/468 [00:22<00:03, 17.53it/s]
avg reward: 1.23:  87%|████████▋ | 406/468 [00:22<00:03, 17.53it/s]
avg reward: 1.23:  88%|████████▊ | 411/468 [00:22<00:03, 17.49it/s]
avg reward: 1.23:  88%|████████▊ | 411/468 [00:22<00:03, 17.49it/s]
avg reward: 1.23:  88%|████████▊ | 411/468 [00:22<00:03, 17.49it/s]
avg reward: 1.23:  88%|████████▊ | 411/468 [00:22<00:03, 17.49it/s]
avg reward: 1.23:  88%|████████▊ | 411/468 [00:22<00:03, 17.49it/s]
avg reward: 1.23:  88%|████████▊ | 411/468 [00:23<00:03, 17.49it/s]
avg reward: 1.23:  89%|████████▉ | 416/468 [00:23<00:02, 18.07it/s]
avg reward: 1.23:  89%|████████▉ | 416/468 [00:23<00:02, 18.07it/s]
avg reward: 1.23:  89%|████████▉ | 416/468 [00:23<00:02, 18.07it/s]
avg reward: 1.23:  89%|████████▉ | 416/468 [00:23<00:02, 18.07it/s]
avg reward: 1.23:  89%|████████▉ | 416/468 [00:23<00:02, 18.07it/s]
avg reward: 1.23:  90%|████████▉ | 420/468 [00:23<00:02, 20.99it/s]
avg reward: 1.23:  90%|████████▉ | 420/468 [00:23<00:02, 20.99it/s]
avg reward: 1.23:  90%|████████▉ | 420/468 [00:23<00:02, 20.99it/s]
avg reward: 1.23:  90%|████████▉ | 420/468 [00:23<00:02, 20.99it/s]
avg reward: 1.23:  90%|█████████ | 423/468 [00:23<00:02, 17.70it/s]
avg reward: 1.23:  90%|█████████ | 423/468 [00:23<00:02, 17.70it/s]
avg reward: 1.23:  90%|█████████ | 423/468 [00:23<00:02, 17.70it/s]
avg reward: 1.23:  90%|█████████ | 423/468 [00:23<00:02, 17.70it/s]
avg reward: 1.23:  91%|█████████ | 426/468 [00:23<00:02, 16.51it/s]
avg reward: 1.23:  91%|█████████ | 426/468 [00:23<00:02, 16.51it/s]
avg reward: 1.23:  91%|█████████ | 426/468 [00:23<00:02, 16.51it/s]
avg reward: 1.23:  91%|█████████ | 426/468 [00:23<00:02, 16.51it/s]
avg reward: 1.23:  91%|█████████ | 426/468 [00:23<00:02, 16.51it/s]
avg reward: 1.23:  92%|█████████▏| 430/468 [00:23<00:01, 20.09it/s]
avg reward: 1.23:  92%|█████████▏| 430/468 [00:23<00:01, 20.09it/s]
avg reward: 1.23:  92%|█████████▏| 430/468 [00:23<00:01, 20.09it/s]
avg reward: 1.23:  92%|█████████▏| 430/468 [00:23<00:01, 20.09it/s]
avg reward: 1.23:  93%|█████████▎| 433/468 [00:23<00:01, 17.72it/s]
avg reward: 1.23:  93%|█████████▎| 433/468 [00:23<00:01, 17.72it/s]
avg reward: 1.23:  93%|█████████▎| 433/468 [00:24<00:01, 17.72it/s]
avg reward: 1.23:  93%|█████████▎| 433/468 [00:24<00:01, 17.72it/s]
avg reward: 1.23:  93%|█████████▎| 436/468 [00:24<00:01, 16.09it/s]
avg reward: 1.23:  93%|█████████▎| 436/468 [00:24<00:01, 16.09it/s]
avg reward: 1.23:  93%|█████████▎| 436/468 [00:24<00:01, 16.09it/s]
avg reward: 1.23:  93%|█████████▎| 436/468 [00:24<00:01, 16.09it/s]
avg reward: 1.23:  93%|█████████▎| 436/468 [00:24<00:01, 16.09it/s]
avg reward: 1.23:  94%|█████████▍| 440/468 [00:24<00:01, 19.76it/s]
avg reward: 1.23:  94%|█████████▍| 440/468 [00:24<00:01, 19.76it/s]
avg reward: 1.23:  94%|█████████▍| 440/468 [00:24<00:01, 19.76it/s]
avg reward: 1.23:  94%|█████████▍| 440/468 [00:24<00:01, 19.76it/s]
avg reward: 1.23:  95%|█████████▍| 443/468 [00:24<00:01, 17.46it/s]
avg reward: 1.23:  95%|█████████▍| 443/468 [00:24<00:01, 17.46it/s]
avg reward: 1.23:  95%|█████████▍| 443/468 [00:24<00:01, 17.46it/s]
avg reward: 1.23:  95%|█████████▍| 443/468 [00:24<00:01, 17.46it/s]
avg reward: 1.23:  95%|█████████▌| 446/468 [00:24<00:01, 16.25it/s]
avg reward: 1.23:  95%|█████████▌| 446/468 [00:24<00:01, 16.25it/s]
avg reward: 1.23:  95%|█████████▌| 446/468 [00:24<00:01, 16.25it/s]
avg reward: 1.23:  95%|█████████▌| 446/468 [00:24<00:01, 16.25it/s]
avg reward: 1.23:  95%|█████████▌| 446/468 [00:24<00:01, 16.25it/s]
avg reward: 1.23:  95%|█████████▌| 446/468 [00:25<00:01, 16.25it/s]
avg reward: 1.23:  96%|█████████▋| 451/468 [00:25<00:00, 17.22it/s]
avg reward: 1.23:  96%|█████████▋| 451/468 [00:25<00:00, 17.22it/s]
avg reward: 1.23:  96%|█████████▋| 451/468 [00:25<00:00, 17.22it/s]
avg reward: 1.23:  96%|█████████▋| 451/468 [00:25<00:00, 17.22it/s]
avg reward: 1.23:  96%|█████████▋| 451/468 [00:25<00:00, 17.22it/s]
avg reward: 1.23:  96%|█████████▋| 451/468 [00:25<00:00, 17.22it/s]
avg reward: 1.23:  97%|█████████▋| 456/468 [00:25<00:00, 17.50it/s]
avg reward: 1.23:  97%|█████████▋| 456/468 [00:25<00:00, 17.50it/s]
avg reward: 1.23:  97%|█████████▋| 456/468 [00:25<00:00, 17.50it/s]
avg reward: 1.23:  97%|█████████▋| 456/468 [00:25<00:00, 17.50it/s]
avg reward: 1.23:  97%|█████████▋| 456/468 [00:25<00:00, 17.50it/s]
avg reward: 1.23:  97%|█████████▋| 456/468 [00:25<00:00, 17.50it/s]
avg reward: 1.23:  99%|█████████▊| 461/468 [00:25<00:00, 18.09it/s]
avg reward: 1.23:  99%|█████████▊| 461/468 [00:25<00:00, 18.09it/s]
avg reward: 1.23:  99%|█████████▊| 461/468 [00:25<00:00, 18.09it/s]
avg reward: 1.23:  99%|█████████▊| 461/468 [00:25<00:00, 18.09it/s]
avg reward: 1.23:  99%|█████████▊| 461/468 [00:25<00:00, 18.09it/s]
avg reward: 1.23:  99%|█████████▊| 461/468 [00:25<00:00, 18.09it/s]
avg reward: 1.23: 100%|█████████▉| 466/468 [00:25<00:00, 18.64it/s]
avg reward: 1.23: 100%|█████████▉| 466/468 [00:25<00:00, 18.64it/s]
avg reward: 1.23: 100%|██████████| 468/468 [00:25<00:00, 18.11it/s]

  0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.9765625:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.984375:   0%|          | 0/79 [00:00<?, ?it/s] 
Val Acc: 0.9869791666666666:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.986328125:   0%|          | 0/79 [00:00<?, ?it/s]       
Val Acc: 0.9875:   0%|          | 0/79 [00:00<?, ?it/s]     
Val Acc: 0.9869791666666666:   0%|          | 0/79 [00:00<?, ?it/s]
Val Acc: 0.9869791666666666:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]
Val Acc: 0.9854910714285714:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]
Val Acc: 0.984375:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]          
Val Acc: 0.9861111111111112:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]
Val Acc: 0.98359375:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]        
Val Acc: 0.9829545454545454:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]
Val Acc: 0.9837239583333334:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]
Val Acc: 0.9825721153846154:   8%|▊         | 6/79 [00:00<00:01, 58.93it/s]
Val Acc: 0.9825721153846154:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]
Val Acc: 0.9832589285714286:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]
Val Acc: 0.9833333333333333:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]
Val Acc: 0.98193359375:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]     
Val Acc: 0.9820772058823529:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]
Val Acc: 0.9822048611111112:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]
Val Acc: 0.9810855263157895:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]
Val Acc: 0.98046875:  16%|█▋        | 13/79 [00:00<00:01, 63.51it/s]        
Val Acc: 0.98046875:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]
Val Acc: 0.9813988095238095:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]
Val Acc: 0.9818892045454546:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]
Val Acc: 0.9813179347826086:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]
Val Acc: 0.9817708333333334:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]
Val Acc: 0.9821875:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]         
Val Acc: 0.9819711538461539:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]
Val Acc: 0.9820601851851852:  25%|██▌       | 20/79 [00:00<00:00, 63.68it/s]
Val Acc: 0.9820601851851852:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9818638392857143:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9811422413793104:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9807291666666667:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9808467741935484:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9814453125:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]      
Val Acc: 0.9820075757575758:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9818474264705882:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9821428571428571:  34%|███▍      | 27/79 [00:00<00:00, 63.80it/s]
Val Acc: 0.9821428571428571:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.9819878472222222:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.9822635135135135:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.9823190789473685:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.9819711538461539:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.981640625:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]       
Val Acc: 0.9817073170731707:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.9815848214285714:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.9816497093023255:  44%|████▍     | 35/79 [00:00<00:00, 64.56it/s]
Val Acc: 0.9816497093023255:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]
Val Acc: 0.9817116477272727:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]
Val Acc: 0.9817708333333334:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]
Val Acc: 0.9814877717391305:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]
Val Acc: 0.981216755319149:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s] 
Val Acc: 0.9807942708333334:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]
Val Acc: 0.9805484693877551:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]
Val Acc: 0.98015625:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]        
Val Acc: 0.9800857843137255:  54%|█████▍    | 43/79 [00:00<00:00, 66.11it/s]
Val Acc: 0.9800857843137255:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9801682692307693:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9798054245283019:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9798900462962963:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9799715909090909:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9801897321428571:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9802631578947368:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9801993534482759:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9798728813559322:  65%|██████▍   | 51/79 [00:00<00:00, 64.60it/s]
Val Acc: 0.9798728813559322:  75%|███████▍  | 59/79 [00:00<00:00, 66.58it/s]
Val Acc: 0.9799479166666667:  75%|███████▍  | 59/79 [00:00<00:00, 66.58it/s]
Val Acc: 0.9797643442622951:  75%|███████▍  | 59/79 [00:00<00:00, 66.58it/s]
Val Acc: 0.9798387096774194:  75%|███████▍  | 59/79 [00:00<00:00, 66.58it/s]
Val Acc: 0.9801587301587301:  75%|███████▍  | 59/79 [00:00<00:00, 66.58it/s]
Val Acc: 0.9801025390625:  75%|███████▍  | 59/79 [00:00<00:00, 66.58it/s]   
Val Acc: 0.9801682692307693:  75%|███████▍  | 59/79 [00:00<00:00, 66.58it/s]
Val Acc: 0.9798768939393939:  75%|███████▍  | 59/79 [00:01<00:00, 66.58it/s]
Val Acc: 0.9798768939393939:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9800606343283582:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9801240808823529:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9799592391304348:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9800223214285714:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9799735915492958:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9798177083333334:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9799871575342466:  84%|████████▎ | 66/79 [00:01<00:00, 67.08it/s]
Val Acc: 0.9799871575342466:  92%|█████████▏| 73/79 [00:01<00:00, 66.65it/s]
Val Acc: 0.9799408783783784:  92%|█████████▏| 73/79 [00:01<00:00, 66.65it/s]
Val Acc: 0.9797916666666666:  92%|█████████▏| 73/79 [00:01<00:00, 66.65it/s]
Val Acc: 0.9799547697368421:  92%|█████████▏| 73/79 [00:01<00:00, 66.65it/s]
Val Acc: 0.9799107142857143:  92%|█████████▏| 73/79 [00:01<00:00, 66.65it/s]
Val Acc: 0.9798677884615384:  92%|█████████▏| 73/79 [00:01<00:00, 66.65it/s]
Val Acc: 0.9799: 100%|██████████| 79/79 [00:01<00:00, 65.28it/s]
epoch 0, val_acc: 0.98, avg reward: 1.23: 100%|██████████| 1/1 [00:27<00:00, 27.10s/it]

The resulting architecture is:

mynet.graph
../../_images/output_enas_proxylessnas_ad55b9_25_0.svg

Store the trained model as a static network

The trained ENAS network can be saved to disk for future inferences.

mynet.export('enas')
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/extra/src/autogluon/extra/contrib/enas/enas.py:337: UserWarning: "ENAS_Sequential._modules" is an unregistered container with Blocks. Note that Blocks inside the list, tuple or dict will not be registered automatically. Make sure to register them using register_child() or switching to nn.Sequential/nn.HybridSequential instead.
  for name, param in self.collect_params().items():

Load it back with mxnet:

mynet_static = mx.gluon.nn.SymbolBlock.imports("enas-symbol.json", ['data'], "enas.params")
y = mynet_static(mx.nd.zeros((1, 1, 28, 28)))
print(y.shape)
(1, 10)
/var/lib/jenkins/workspace/workspace/autogluon-tutorial-nas-v3/venv/lib/python3.9/site-packages/mxnet/gluon/block.py:1512: UserWarning: Cannot decide type for the following arguments. Consider providing them as input:
    data: None
  input_sym_arg_type = in_param.infer_type()[0]

Reference

[1] Efficient Neural Architecture Search via Parameter Sharing H Pham, MY Guan, B Zoph, QV Le, J Dean International Conference on Machine Learning (ICML)

[3] ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware Han Cai, Ligeng Zhu, Song Han International Conference on Learning Representations (ICLR), 2019.