def init()

in compare_models.py [0:0]


    def init(self, args, models):
        ''' Instead of load '''
        optimizers = []
        for model in models:
            optim_fn = optim.__dict__[args.optim]
            kwargs = {
                'lr': args.lr,
                'weight_decay': args.lr * args.weight_decay
            }
            if optim_fn == optim.SGD or optim_fn == optim.RMSprop:
                kwargs['momentum'] = args.momentum
            optimizers.append({'model': optim_fn(model.parameters(), **kwargs)})
            if hasattr(model, "with_z") and model.with_z:
                optimizers[-1]['zbwd'] = model.z_opt([model.zbwd], lr=model.z_lr)

        self.optimizers = optimizers

        # Just stuff we want to keep between runs
        self.state = State({
            # bookeeping
            'epoch': 0,
            'running_loss': [[] for _ in models],
            'running_valids': [[] for _ in models],
            'running_f1_scores': [defaultdict(list) for _ in models],
            'best_valid': [1.0E10 for _ in models],
            'n_samples': 0,
            'n_frame': 0,

            # parsed arguments
            'only_us': args.predict == "only_us",
            'full_info': args.predict == "full_info",
            'only_defog': args.predict == "only_defog",
            'delta_full_info': False,
            'delta': args.predict_delta,

            # Time between reports, so we know how long things took
            'c_frames': 0,
            'c_time': start_time,
            'args': args,
            'version': 0,  # increment this when stuff changes
        })