Download code/speaker_v2/evaluate.py from laion/tyger-speaker-predictor: direct link, hf CLI and curl.
- Browser
- Download file 1.9 kB
-
https://huggingface.co/laion/tyger-speaker-predictor/resolve/main/code/speaker_v2/evaluate.py
- Command line
-
hf download hf://laion/tyger-speaker-predictor/code/speaker_v2/evaluate.py
-
curl -L -o evaluate.py https://huggingface.co/laion/tyger-speaker-predictor/resolve/main/code/speaker_v2/evaluate.py
1.9 kB
| """Evaluate a frozen pilot checkpoint on a separate feature corpus, no refitting.""" | |
| import argparse | |
| import json | |
| from pathlib import Path | |
| import torch | |
| from .models import SpeakerPredictor,load_state | |
| from .train import Windows,predictions,evaluate,grouped_metrics,accumulation_metrics,teacher_oracle,stable_context_metrics | |
| def main(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--checkpoint",required=True) | |
| parser.add_argument("--data",required=True) | |
| parser.add_argument("--out",required=True) | |
| args = parser.parse_args() | |
| torch.set_num_threads(6) | |
| state = torch.load(args.checkpoint,map_location="cpu",weights_only=False) | |
| cfg = state["config"] | |
| model = SpeakerPredictor(cfg["architecture"],cfg["width"],centered=cfg.get("centered_target",False)) | |
| load_state(model,state["model"]) | |
| model.eval() | |
| data = Windows(args.data,"test",cfg["context"]) | |
| validation = Windows(args.data,"val",cfg["context"]) | |
| pred = predictions(model,data,"cpu") | |
| threshold = state.get("verification_threshold",state["validation"]["far05_threshold"]) | |
| payload = {"checkpoint":args.checkpoint,"data":args.data,"config":cfg, | |
| "threshold_source":"Frozen original checkpoint validation threshold; no adaptation to new corpus", | |
| "test":evaluate(pred,data.teachers,threshold), | |
| "validation":evaluate(predictions(model,validation,"cpu"),validation.teachers,threshold), | |
| "test_by_scenario":grouped_metrics(pred,data,threshold), | |
| "test_stable_contexts_oracle":stable_context_metrics(pred,data,threshold), | |
| "accumulation_test_oracle_resets":accumulation_metrics(pred,data,threshold), | |
| "long_clean_teacher_oracle":teacher_oracle(args.data,Windows(args.data,"val",12),data)} | |
| Path(args.out).write_text(json.dumps(payload,indent=2)) | |
| print(json.dumps({"test":payload["test"]})) | |
| if __name__ == "__main__":main() | |