Download predict.py from Crystalbullet/lunar_project: direct link, hf CLI and curl.
- Browser
- Download file 1.6 kB
-
https://huggingface.co/Crystalbullet/lunar_project/resolve/main/predict.py
- Command line
-
hf download hf://Crystalbullet/lunar_project/predict.py
-
curl -L -o predict.py https://huggingface.co/Crystalbullet/lunar_project/resolve/main/predict.py
1.6 kB
| """Inference from a self-describing audited checkpoint; CSV schema enforced.""" | |
| import argparse | |
| from pathlib import Path | |
| import pandas as pd | |
| from experiment_utils import ROOT, atomic_csv, validate_submission | |
| from training_engine import Settings, setup, build_model, load_checkpoint, prediction_frame | |
| def predict(checkpoint,output): | |
| state=load_checkpoint(checkpoint) | |
| if state.get('schema')!=2: | |
| raise ValueError('Legacy checkpoint: use its archived source/preprocessing in original_snapshot.') | |
| settings=Settings(**state['settings']); setup(settings.seed) | |
| model=build_model(settings,False).cuda(); model.load_state_dict(state['model']) | |
| frame=pd.read_csv(ROOT/'Test_DATA/test_metadata.csv') | |
| probabilities=prediction_frame(model,frame,settings,state['threshold'],ROOT/'Test_DATA/eval_images') | |
| submission=pd.DataFrame(dict(image_id=frame.image_id,label=probabilities.prediction.astype(int))) | |
| validate_submission(submission,frame.image_id) | |
| output=Path(output) | |
| if output.exists(): | |
| raise FileExistsError(f'Preserve the existing output or choose a new path: {output}') | |
| atomic_csv(output,submission) | |
| atomic_csv(output.with_name('evaluation_probabilities.csv'),probabilities) | |
| print(f'Validated {len(submission)} predictions: {output}',flush=True) | |
| return submission | |
| def main(): | |
| parser=argparse.ArgumentParser() | |
| parser.add_argument('--checkpoint',type=Path,required=True) | |
| parser.add_argument('--output',type=Path,required=True) | |
| args=parser.parse_args(); predict(args.checkpoint,args.output) | |
| if __name__=='__main__': main() | |