yushuang88's picture
Upload folder using huggingface_hub
8bf8ea0 verified
Raw History Blame Contribute Delete
2.16 kB
from __future__ import annotations
import argparse
from pathlib import Path
import numpy as np
import torch
from common import (
build_model,
collect_predictions,
get_device,
load_config,
make_loaders,
mean_relative_l2_percent,
resolve_output_path,
save_json,
set_seed,
)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument("--config", default=str(Path(__file__).resolve().parents[1] / "config" / "config.yaml"))
parser.add_argument("--checkpoint", default=None)
return parser.parse_args()
def main() -> None:
args = parse_args()
cfg = load_config(args.config)
set_seed(cfg["training"]["seed"], cfg["runtime"]["deterministic"], cfg["runtime"]["benchmark"])
device = get_device(cfg)
checkpoint = Path(args.checkpoint) if args.checkpoint else resolve_output_path(cfg, cfg["paths"]["checkpoint"])
results_dir = resolve_output_path(cfg, cfg["paths"]["results_dir"])
results_dir.mkdir(parents=True, exist_ok=True)
_, _, test_loader = make_loaders(cfg)
model = build_model(cfg).to(device)
payload = torch.load(checkpoint, map_location=device)
model.load_state_dict(payload["model_state"] if "model_state" in payload else payload)
test_l2 = mean_relative_l2_percent(model, test_loader, device)
inputs, preds, targets = collect_predictions(model, test_loader, device)
pred_path = results_dir / "test_predictions.npz"
np.savez_compressed(pred_path, inputs=inputs, predictions=preds, targets=targets)
save_json(
results_dir / "inference_metrics.json",
{
"status": "complete",
"checkpoint": str(checkpoint),
"prediction_file": str(pred_path),
"test_mean_relative_l2_percent": test_l2,
"paper_crop_re10000_percent": cfg["experiment"]["paper_reference_test_percent"],
"paper_crop_re10000_std_percent": cfg["experiment"]["paper_reference_std_percent"],
},
)
print(f"inference_complete test_mean_relative_l2={test_l2:.6f}% predictions={pred_path}", flush=True)
if __name__ == "__main__":
main()