MotorImageryCampaign.Config(
        study_name='motor_imagery',
        experiment_name='exp000',
        doc='',
        base_dir='/opt/scratch',
        working_dir=PosixPath('/opt/scratch/runs/motor_imagery/exp000'),
        validation=MotorImageryLoop.Config(
        │   study_name='motor_imagery',
        │   experiment_name='exp000',
        │   base_dir='/opt/scratch',
        │   working_dir=PosixPath('/opt/scratch/runs/motor_imagery/exp000/fits'),
        │   doc='',
        │   step=MotorImageryStep.Config(
        │   │   model=MultiScaleEEGNet.Config(
        │   │   │   channels_in=8,
        │   │   │   channels_out=2,
        │   │   │   num_samples=500,
        │   │   │   channels_hidden=8,
        │   │   │   multiplier=2,
        │   │   │   channels_projection=16,
        │   │   │   activation=priml.model.swiglu.elu,
        │   │   │   conv_t1=Conv2d.Config(
        │   │   │       channels_in=1,
        │   │   │       channels_out=8,
        │   │   │       kernel_size=(1, 63),
        │   │   │       stride=1,
        │   │   │       padding=(0, 31),
        │   │   │       dilation=1,
        │   │   │       groups=1,
        │   │   │       bias=False,
        │   │   │       depth_index=(),
        │   │   │       device=None,
        │   │   │       dtype=None,
        │   │   │       init_weight=priml.model.init.kaiming_uniform,
        │   │   │       init_bias=torch.nn.init.zeros_
        │   │   │   ),
        │   │   │   conv_t2=Conv2d.Config(
        │   │   │       channels_in=1,
        │   │   │       channels_out=8,
        │   │   │       kernel_size=(1, 31),
        │   │   │       stride=1,
        │   │   │       padding=(0, 15),
        │   │   │       dilation=1,
        │   │   │       groups=1,
        │   │   │       bias=False,
        │   │   │       depth_index=(),
        │   │   │       device=None,
        │   │   │       dtype=None,
        │   │   │       init_weight=priml.model.init.kaiming_uniform,
        │   │   │       init_bias=torch.nn.init.zeros_
        │   │   │   ),
        │   │   │   conv_t3=Conv2d.Config(
        │   │   │       channels_in=1,
        │   │   │       channels_out=8,
        │   │   │       kernel_size=(1, 15),
        │   │   │       stride=1,
        │   │   │       padding=(0, 7),
        │   │   │       dilation=1,
        │   │   │       groups=1,
        │   │   │       bias=False,
        │   │   │       depth_index=(),
        │   │   │       device=None,
        │   │   │       dtype=None,
        │   │   │       init_weight=priml.model.init.kaiming_uniform,
        │   │   │       init_bias=torch.nn.init.zeros_
        │   │   │   ),
        │   │   │   norm_t=BatchNorm2d.Config(
        │   │   │       channels_in=24,
        │   │   │       channels_out=24,
        │   │   │       momentum=0.1,
        │   │   │       eps=1e-05,
        │   │   │       elementwise_affine=True,
        │   │   │       device=None,
        │   │   │       dtype=None
        │   │   │   ),
        │   │   │   conv_s=Conv2d.Config(
        │   │   │       channels_in=24,
        │   │   │       channels_out=48,
        │   │   │       kernel_size=(8, 1),
        │   │   │       stride=1,
        │   │   │       padding=0,
        │   │   │       dilation=1,
        │   │   │       groups=24,
        │   │   │       bias=False,
        │   │   │       depth_index=(),
        │   │   │       device=None,
        │   │   │       dtype=None,
        │   │   │       init_weight=priml.model.init.kaiming_uniform,
        │   │   │       init_bias=torch.nn.init.zeros_
        │   │   │   ),
        │   │   │   norm_s=BatchNorm2d.Config(
        │   │   │       channels_in=48,
        │   │   │       channels_out=48,
        │   │   │       momentum=0.1,
        │   │   │       eps=1e-05,
        │   │   │       elementwise_affine=True,
        │   │   │       device=None,
        │   │   │       dtype=None
        │   │   │   ),
        │   │   │   conv_sep_depth=Conv2d.Config(
        │   │   │       channels_in=48,
        │   │   │       channels_out=48,
        │   │   │       kernel_size=(1, 15),
        │   │   │       stride=1,
        │   │   │       padding=(0, 7),
        │   │   │       dilation=1,
        │   │   │       groups=48,
        │   │   │       bias=False,
        │   │   │       depth_index=(),
        │   │   │       device=None,
        │   │   │       dtype=None,
        │   │   │       init_weight=priml.model.init.kaiming_uniform,
        │   │   │       init_bias=torch.nn.init.zeros_
        │   │   │   ),
        │   │   │   conv_sep_point=Conv2d.Config(
        │   │   │       channels_in=48,
        │   │   │       channels_out=32,
        │   │   │       kernel_size=1,
        │   │   │       stride=1,
        │   │   │       padding=0,
        │   │   │       dilation=1,
        │   │   │       groups=1,
        │   │   │       bias=False,
        │   │   │       depth_index=(),
        │   │   │       device=None,
        │   │   │       dtype=None,
        │   │   │       init_weight=priml.model.init.kaiming_uniform,
        │   │   │       init_bias=torch.nn.init.zeros_
        │   │   │   ),
        │   │   │   norm_sep=BatchNorm2d.Config(
        │   │   │       channels_in=32,
        │   │   │       channels_out=32,
        │   │   │       momentum=0.1,
        │   │   │       eps=1e-05,
        │   │   │       elementwise_affine=True,
        │   │   │       device=None,
        │   │   │       dtype=None
        │   │   │   ),
        │   │   │   pool1=AvgPool2d.Config(
        │   │   │       channels_in=-1,
        │   │   │       channels_out=-1,
        │   │   │       kernel_size=(1, 4),
        │   │   │       stride=None,
        │   │   │       padding=0,
        │   │   │       ceil_mode=False,
        │   │   │       count_include_pad=True,
        │   │   │       divisor_override=None
        │   │   │   ),
        │   │   │   pool2=AvgPool2d.Config(
        │   │   │       channels_in=-1,
        │   │   │       channels_out=-1,
        │   │   │       kernel_size=(1, 8),
        │   │   │       stride=None,
        │   │   │       padding=0,
        │   │   │       ceil_mode=False,
        │   │   │       count_include_pad=True,
        │   │   │       divisor_override=None
        │   │   │   ),
        │   │   │   drop1=Dropout.Config(
        │   │   │       channels_in=-1,
        │   │   │       channels_out=-1,
        │   │   │       p=0.25,
        │   │   │       inplace=False
        │   │   │   ),
        │   │   │   drop2=Dropout.Config(
        │   │   │       channels_in=-1,
        │   │   │       channels_out=-1,
        │   │   │       p=0.25,
        │   │   │       inplace=False
        │   │   │   ),
        │   │   │   proj_out=Linear.Config(
        │   │   │       channels_in=480,
        │   │   │       channels_out=2,
        │   │   │       bias=True,
        │   │   │       depth_index=(),
        │   │   │       device=None,
        │   │   │       dtype=None,
        │   │   │       init_weight=priml.model.init.kaiming_uniform,
        │   │   │       init_bias=None,
        │   │   │       linear_fn=<built-in function linear>,
        │   │   │       shard=None
        │   │   │   )
        │   │   ),
        │   │   optimizer=CompositeOptimizer.Config(
        │   │       optimizers=[
        │   │           PartialConfig(
        │   │               <class 'torch.optim.adamw.AdamW'>,
        │   │               lr=0.001,
        │   │               weight_decay=0.001
        │   │           )
        │   │       ],
        │   │       select=[],
        │   │       require_total=True,
        │   │       drop_empty=False
        │   │   ),
        │   │   loss=SimpleLoss.Config(
        │   │       loss_fn=functools.partial(priml.baselines.motor_imagery.train_step.cross_entropy_off_target, smoothing=0.05),
        │   │       target_key='label',
        │   │       kwargs={'reduction': 'none'},
        │   │       channels_out=2
        │   │   ),
        │   │   accumulate_grad_batches=1,
        │   │   drop_partial_accumulation_on_epoch_end=True,
        │   │   train_budget_steps=inf,
        │   │   train_budget_sec=inf,
        │   │   train_budget_epochs=18,
        │   │   lr_schedule=RecursiveCosine.Config(T_max=18, eta_min=1e-05),
        │   │   parallelism=NoParallel.Config(device=None),
        │   │   model_quantization=NoModelQuantization.Config(),
        │   │   activation_memoization=DefaultActivationStorage.Config(),
        │   │   compile=None,
        │   │   ema=NoEMA.Config(),
        │   │   gradient_clip_norm=1.0,
        │   │   skip_step_on_nonfinite_grad=False,
        │   │   device_init='eager',
        │   │   dtype_autocast=None,
        │   │   autocast_cache_enabled=False
        │   ),
        │   dataset=WindowData.Config(
        │       base_dir='/opt/scratch',
        │       working_dir=PosixPath('/opt/scratch/datasets/motor-imagery'),
        │       preprocessing=Preprocessing.Config(
        │           channels=('Fz', 'C3', 'Cz', 'C4', 'PO7', 'Pz', 'PO8', 'Oz'),
        │           sample_rate=250.0,
        │           notch_hz=50.0,
        │           notch_quality=30.0,
        │           band_hz=(1.0, 45.0),
        │           filter_order=4,
        │           eps=1e-08,
        │           window_size=500,
        │           window_step=125
        │       ),
        │       validation_subjects=[],
        │       batch_size=64
        │   ),
        │   metrics_train={},
        │   metrics_eval={'': EEGAccuracy.Config()},
        │   checkpointer=None,
        │   profiler=None,
        │   phase_timer=PhaseTimer.Config(
        │       enabled=False,
        │       torch_profile=False,
        │       base_dir=PosixPath('/opt/scratch/runs/motor_imagery/exp000/fits'),
        │       working_dir=PosixPath('/opt/scratch/runs/motor_imagery/exp000/fits/profiling'),
        │       heartbeat_interval_sec=20.0,
        │       fault_dump_interval_sec=40.0,
        │       cuda_events=False
        │   ),
        │   tracker=None,
        │   max_steps=inf,
        │   max_epochs=18,
        │   max_time=inf,
        │   max_time_kind='wall',
        │   max_eval_time=inf,
        │   eval_stop_on_time_limit=False,
        │   num_steps_eval=inf,
        │   num_steps_log=10,
        │   early_train_log_steps=100,
        │   eval_every_epoch=True,
        │   eval_extras_every_eval=False,
        │   eval_warmup_batches=0,
        │   eval_only=False,
        │   restore_rng_state=True,
        │   seed=None,
        │   model_torch_seed=None,
        │   num_steps_garbage_collect=inf,
        │   mesh_dim_model_seed='pp',
        │   mesh_dim_data_seed='dp',
        │   runtime=CudnnSingleProcess.Config(
        │       device=None,
        │       deterministic=False,
        │       float32_matmul_precision=None,
        │       cudnn_benchmark=False,
        │       cudnn_deterministic=True,
        │       cudnn_allow_tf32=None
        │   )
        ),
        ensemble_loop=MotorImageryLoop.Config(
        │   study_name='motor_imagery',
        │   experiment_name='exp000',
        │   base_dir='/opt/scratch',
        │   working_dir=PosixPath('/opt/scratch/runs/motor_imagery/exp000/fits'),
        │   doc='',
        │   step=MotorImageryStep.Config(
        │       model=Identity.Config(channels_in=-1, channels_out=-1),
        │       optimizer=CompositeOptimizer.Config(
        │           optimizers=[
        │               PartialConfig(
        │                   <class 'torch.optim.adamw.AdamW'>,
        │                   lr=0.001,
        │                   weight_decay=0.001
        │               )
        │           ],
        │           select=[],
        │           require_total=True,
        │           drop_empty=False
        │       ),
        │       loss=SimpleLoss.Config(
        │           loss_fn=functools.partial(priml.baselines.motor_imagery.train_step.cross_entropy_off_target, smoothing=0.05),
        │           target_key='label',
        │           kwargs={'reduction': 'none'},
        │           channels_out=2
        │       ),
        │       accumulate_grad_batches=1,
        │       drop_partial_accumulation_on_epoch_end=True,
        │       train_budget_steps=inf,
        │       train_budget_sec=inf,
        │       train_budget_epochs=16,
        │       lr_schedule=RecursiveCosine.Config(T_max=16, eta_min=1e-05),
        │       parallelism=NoParallel.Config(device=None),
        │       model_quantization=NoModelQuantization.Config(),
        │       activation_memoization=DefaultActivationStorage.Config(),
        │       compile=None,
        │       ema=NoEMA.Config(),
        │       gradient_clip_norm=1.0,
        │       skip_step_on_nonfinite_grad=False,
        │       device_init='eager',
        │       dtype_autocast=None,
        │       autocast_cache_enabled=False
        │   ),
        │   dataset=WindowData.Config(
        │       base_dir='/opt/scratch',
        │       working_dir=PosixPath('/opt/scratch/datasets/motor-imagery'),
        │       preprocessing=Preprocessing.Config(
        │           channels=(),
        │           sample_rate=0.0,
        │           notch_hz=0.0,
        │           notch_quality=0.0,
        │           band_hz=(0.0, 0.0),
        │           filter_order=0,
        │           eps=0.0,
        │           window_size=0,
        │           window_step=0
        │       ),
        │       validation_subjects=[],
        │       batch_size=64
        │   ),
        │   metrics_train={},
        │   metrics_eval={},
        │   checkpointer=None,
        │   profiler=None,
        │   phase_timer=PhaseTimer.Config(
        │       enabled=False,
        │       torch_profile=False,
        │       base_dir=PosixPath('/opt/scratch/runs/motor_imagery/exp000/fits'),
        │       working_dir=PosixPath('/opt/scratch/runs/motor_imagery/exp000/fits/profiling'),
        │       heartbeat_interval_sec=20.0,
        │       fault_dump_interval_sec=40.0,
        │       cuda_events=False
        │   ),
        │   tracker=None,
        │   max_steps=inf,
        │   max_epochs=16,
        │   max_time=inf,
        │   max_time_kind='wall',
        │   max_eval_time=inf,
        │   eval_stop_on_time_limit=False,
        │   num_steps_eval=inf,
        │   num_steps_log=10,
        │   early_train_log_steps=100,
        │   eval_every_epoch=False,
        │   eval_extras_every_eval=False,
        │   eval_warmup_batches=0,
        │   eval_only=False,
        │   restore_rng_state=True,
        │   seed=None,
        │   model_torch_seed=None,
        │   num_steps_garbage_collect=inf,
        │   mesh_dim_model_seed='pp',
        │   mesh_dim_data_seed='dp',
        │   runtime=CudnnSingleProcess.Config(
        │       device=None,
        │       deterministic=False,
        │       float32_matmul_precision=None,
        │       cudnn_benchmark=False,
        │       cudnn_deterministic=True,
        │       cudnn_allow_tf32=None
        │   )
        ),
        ensemble=[
        │   MultiScaleEEGNet.Config(
        │       channels_in=8,
        │       channels_out=2,
        │       num_samples=500,
        │       channels_hidden=8,
        │       multiplier=2,
        │       channels_projection=16,
        │       activation=priml.model.swiglu.elu,
        │       conv_t1=Conv2d.Config(
        │           channels_in=1,
        │           channels_out=8,
        │           kernel_size=(1, 63),
        │           stride=1,
        │           padding=(0, 31),
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       conv_t2=Conv2d.Config(
        │           channels_in=1,
        │           channels_out=8,
        │           kernel_size=(1, 31),
        │           stride=1,
        │           padding=(0, 15),
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       conv_t3=Conv2d.Config(
        │           channels_in=1,
        │           channels_out=8,
        │           kernel_size=(1, 15),
        │           stride=1,
        │           padding=(0, 7),
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       norm_t=BatchNorm2d.Config(
        │           channels_in=24,
        │           channels_out=24,
        │           momentum=0.1,
        │           eps=1e-05,
        │           elementwise_affine=True,
        │           device=None,
        │           dtype=None
        │       ),
        │       conv_s=Conv2d.Config(
        │           channels_in=24,
        │           channels_out=48,
        │           kernel_size=(8, 1),
        │           stride=1,
        │           padding=0,
        │           dilation=1,
        │           groups=24,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       norm_s=BatchNorm2d.Config(
        │           channels_in=48,
        │           channels_out=48,
        │           momentum=0.1,
        │           eps=1e-05,
        │           elementwise_affine=True,
        │           device=None,
        │           dtype=None
        │       ),
        │       conv_sep_depth=Conv2d.Config(
        │           channels_in=48,
        │           channels_out=48,
        │           kernel_size=(1, 15),
        │           stride=1,
        │           padding=(0, 7),
        │           dilation=1,
        │           groups=48,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       conv_sep_point=Conv2d.Config(
        │           channels_in=48,
        │           channels_out=32,
        │           kernel_size=1,
        │           stride=1,
        │           padding=0,
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       norm_sep=BatchNorm2d.Config(
        │           channels_in=32,
        │           channels_out=32,
        │           momentum=0.1,
        │           eps=1e-05,
        │           elementwise_affine=True,
        │           device=None,
        │           dtype=None
        │       ),
        │       pool1=AvgPool2d.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           kernel_size=(1, 4),
        │           stride=None,
        │           padding=0,
        │           ceil_mode=False,
        │           count_include_pad=True,
        │           divisor_override=None
        │       ),
        │       pool2=AvgPool2d.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           kernel_size=(1, 8),
        │           stride=None,
        │           padding=0,
        │           ceil_mode=False,
        │           count_include_pad=True,
        │           divisor_override=None
        │       ),
        │       drop1=Dropout.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           p=0.25,
        │           inplace=False
        │       ),
        │       drop2=Dropout.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           p=0.25,
        │           inplace=False
        │       ),
        │       proj_out=Linear.Config(
        │           channels_in=480,
        │           channels_out=2,
        │           bias=True,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=None,
        │           linear_fn=<built-in function linear>,
        │           shard=None
        │       )
        │   ),
        │   ShallowConvNet.Config(
        │       channels_in=8,
        │       channels_out=2,
        │       num_samples=500,
        │       channels_hidden=40,
        │       eps=1e-06,
        │       conv_t=Conv2d.Config(
        │           channels_in=1,
        │           channels_out=40,
        │           kernel_size=(1, 25),
        │           stride=1,
        │           padding=0,
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       conv_s=Conv2d.Config(
        │           channels_in=40,
        │           channels_out=40,
        │           kernel_size=(8, 1),
        │           stride=1,
        │           padding=0,
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       norm=BatchNorm2d.Config(
        │           channels_in=40,
        │           channels_out=40,
        │           momentum=0.1,
        │           eps=1e-05,
        │           elementwise_affine=True,
        │           device=None,
        │           dtype=None
        │       ),
        │       pool=AvgPool2d.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           kernel_size=(1, 75),
        │           stride=(1, 15),
        │           padding=0,
        │           ceil_mode=False,
        │           count_include_pad=True,
        │           divisor_override=None
        │       ),
        │       drop=Dropout.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           p=0.5,
        │           inplace=False
        │       ),
        │       proj_out=Linear.Config(
        │           channels_in=1_080,
        │           channels_out=2,
        │           bias=True,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=None,
        │           linear_fn=<built-in function linear>,
        │           shard=None
        │       )
        │   ),
        │   AttentionEEGNet.Config(
        │       channels_in=8,
        │       channels_out=2,
        │       num_samples=500,
        │       channels_hidden=8,
        │       multiplier=2,
        │       channels_projection=16,
        │       reduction=4,
        │       activation=priml.model.swiglu.elu,
        │       conv_t=Conv2d.Config(
        │           channels_in=1,
        │           channels_out=8,
        │           kernel_size=(1, 63),
        │           stride=1,
        │           padding=(0, 31),
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       norm_t=BatchNorm2d.Config(
        │           channels_in=8,
        │           channels_out=8,
        │           momentum=0.1,
        │           eps=1e-05,
        │           elementwise_affine=True,
        │           device=None,
        │           dtype=None
        │       ),
        │       conv_s=Conv2d.Config(
        │           channels_in=8,
        │           channels_out=16,
        │           kernel_size=(8, 1),
        │           stride=1,
        │           padding=0,
        │           dilation=1,
        │           groups=8,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       norm_s=BatchNorm2d.Config(
        │           channels_in=16,
        │           channels_out=16,
        │           momentum=0.1,
        │           eps=1e-05,
        │           elementwise_affine=True,
        │           device=None,
        │           dtype=None
        │       ),
        │       conv_sep_depth=Conv2d.Config(
        │           channels_in=16,
        │           channels_out=16,
        │           kernel_size=(1, 15),
        │           stride=1,
        │           padding=(0, 7),
        │           dilation=1,
        │           groups=16,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       conv_sep_point=Conv2d.Config(
        │           channels_in=16,
        │           channels_out=16,
        │           kernel_size=1,
        │           stride=1,
        │           padding=0,
        │           dilation=1,
        │           groups=1,
        │           bias=False,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=torch.nn.init.zeros_
        │       ),
        │       norm_sep=BatchNorm2d.Config(
        │           channels_in=16,
        │           channels_out=16,
        │           momentum=0.1,
        │           eps=1e-05,
        │           elementwise_affine=True,
        │           device=None,
        │           dtype=None
        │       ),
        │       pool1=AvgPool2d.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           kernel_size=(1, 4),
        │           stride=None,
        │           padding=0,
        │           ceil_mode=False,
        │           count_include_pad=True,
        │           divisor_override=None
        │       ),
        │       pool2=AvgPool2d.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           kernel_size=(1, 8),
        │           stride=None,
        │           padding=0,
        │           ceil_mode=False,
        │           count_include_pad=True,
        │           divisor_override=None
        │       ),
        │       drop1=Dropout.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           p=0.25,
        │           inplace=False
        │       ),
        │       drop2=Dropout.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           p=0.25,
        │           inplace=False
        │       ),
        │       proj_out=Linear.Config(
        │           channels_in=240,
        │           channels_out=2,
        │           bias=True,
        │           depth_index=(),
        │           device=None,
        │           dtype=None,
        │           init_weight=priml.model.init.kaiming_uniform,
        │           init_bias=None,
        │           linear_fn=<built-in function linear>,
        │           shard=None
        │       ),
        │       gate=SqueezeExcitation.Config(
        │           channels_in=-1,
        │           channels_out=-1,
        │           channels_hidden=-1,
        │           fc1=Linear.Config(
        │               channels_in=-1,
        │               channels_out=-1,
        │               bias=False,
        │               depth_index=(),
        │               device=None,
        │               dtype=None,
        │               init_weight=priml.model.init.kaiming_uniform,
        │               init_bias=torch.nn.init.zeros_,
        │               linear_fn=<built-in function linear>,
        │               shard=None
        │           ),
        │           fc2=Linear.Config(
        │               channels_in=-1,
        │               channels_out=-1,
        │               bias=False,
        │               depth_index=(),
        │               device=None,
        │               dtype=None,
        │               init_weight=priml.model.init.kaiming_uniform,
        │               init_bias=torch.nn.init.zeros_,
        │               linear_fn=<built-in function linear>,
        │               shard=None
        │           ),
        │           squeeze=priml.baselines.motor_imagery.model.temporal_squeeze,
        │           expand=priml.baselines.motor_imagery.model.temporal_expand,
        │           act=priml.model.swiglu.relu,
        │           gate=priml.model.swiglu.sigmoid
        │       ),
        │       gates=[
        │       │   SqueezeExcitation.Config(
        │       │       channels_in=16,
        │       │       channels_out=16,
        │       │       channels_hidden=4,
        │       │       fc1=Linear.Config(
        │       │           channels_in=16,
        │       │           channels_out=4,
        │       │           bias=False,
        │       │           depth_index=(),
        │       │           device=None,
        │       │           dtype=None,
        │       │           init_weight=priml.model.init.kaiming_uniform,
        │       │           init_bias=torch.nn.init.zeros_,
        │       │           linear_fn=<built-in function linear>,
        │       │           shard=None
        │       │       ),
        │       │       fc2=Linear.Config(
        │       │           channels_in=4,
        │       │           channels_out=16,
        │       │           bias=False,
        │       │           depth_index=(),
        │       │           device=None,
        │       │           dtype=None,
        │       │           init_weight=priml.model.init.kaiming_uniform,
        │       │           init_bias=torch.nn.init.zeros_,
        │       │           linear_fn=<built-in function linear>,
        │       │           shard=None
        │       │       ),
        │       │       squeeze=priml.baselines.motor_imagery.model.temporal_squeeze,
        │       │       expand=priml.baselines.motor_imagery.model.temporal_expand,
        │       │       act=priml.model.swiglu.relu,
        │       │       gate=priml.model.swiglu.sigmoid
        │       │   ),
        │       │   SqueezeExcitation.Config(
        │       │       channels_in=16,
        │       │       channels_out=16,
        │       │       channels_hidden=4,
        │       │       fc1=Linear.Config(
        │       │           channels_in=16,
        │       │           channels_out=4,
        │       │           bias=False,
        │       │           depth_index=(),
        │       │           device=None,
        │       │           dtype=None,
        │       │           init_weight=priml.model.init.kaiming_uniform,
        │       │           init_bias=torch.nn.init.zeros_,
        │       │           linear_fn=<built-in function linear>,
        │       │           shard=None
        │       │       ),
        │       │       fc2=Linear.Config(
        │       │           channels_in=4,
        │       │           channels_out=16,
        │       │           bias=False,
        │       │           depth_index=(),
        │       │           device=None,
        │       │           dtype=None,
        │       │           init_weight=priml.model.init.kaiming_uniform,
        │       │           init_bias=torch.nn.init.zeros_,
        │       │           linear_fn=<built-in function linear>,
        │       │           shard=None
        │       │       ),
        │       │       squeeze=priml.baselines.motor_imagery.model.temporal_squeeze,
        │       │       expand=priml.baselines.motor_imagery.model.temporal_expand,
        │       │       act=priml.model.swiglu.relu,
        │       │       gate=priml.model.swiglu.sigmoid
        │       │   )
        │       ]
        │   )
        ],
        folds=GroupedFolds.Config(count=5),
        seed=42,
        diagnostic_batch_size=4,
        expected_submission_rows=360,
        budget=WallBudget.Config(
            seconds=inf,
            reserve_evaluation_sec=0,
            clock=<built-in function perf_counter>,
            receipt_path=PosixPath('/opt/scratch/runs/motor_imagery/exp000/result.json')
        )
    )
