| import sys |
| sys.path.insert(0, '.') |
| from train_spatial_beats import ( |
| make_ov1_local_spatial_v3b_classwarmup_config, |
| configure_stage1_trainable_parameters, |
| ) |
| from spatial_beats import SpatialBEATs |
|
|
| cfg = make_ov1_local_spatial_v3b_classwarmup_config() |
| print("=== Config ===") |
| print(f" freeze_trunk_in_stage1: {cfg.freeze_trunk_in_stage1}") |
| print(f" unfreeze_top_n_layers: {cfg.unfreeze_top_n_layers}") |
| print(f" unfreeze_full_trunk: {cfg.unfreeze_full_trunk}") |
| print(f" freeze_local_spatial_in_classwarmup: {cfg.freeze_local_spatial_in_classwarmup}") |
| print(f" ddp_find_unused_parameters: {cfg.ddp_find_unused_parameters}") |
| print(f" loss.lambda_direction: {cfg.loss.lambda_direction}") |
| print(f" loss.lambda_dist: {cfg.loss.lambda_dist}") |
| print(f" loss.lambda_cls_aux: {cfg.loss.lambda_cls_aux}") |
| print(f" readout_scheme: {cfg.model.readout_scheme}") |
| print(f" class_finetuned_ckpt: {cfg.class_finetuned_ckpt}") |
| print(f" supervision_mode: {cfg.loss.supervision_mode}") |
|
|
| model = SpatialBEATs(cfg.model) |
| configure_stage1_trainable_parameters(model, cfg) |
|
|
| |
| trainable = [] |
| frozen = [] |
| for name, param in model.named_parameters(): |
| if param.requires_grad: |
| trainable.append(name) |
| else: |
| frozen.append(name) |
|
|
| print(f"\n=== Trainable ({len(trainable)}) ===") |
| for n in trainable: |
| print(f" ✅ {n}") |
| print(f"\n=== Frozen ({len(frozen)}) ===") |
| for n in frozen: |
| print(f" ❄️ {n}") |
|
|
| |
| trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad) |
| total_params = sum(p.numel() for p in model.parameters()) |
| print(f"\nTrainable: {trainable_params:,} / {total_params:,} = {trainable_params/total_params:.1%}") |
|
|