fela-pdm / verify.py
itstheraj's picture
initial commit
031d0d7
Raw
History Blame Contribute Delete
2.35 kB
import argparse
import os
import sys
import torch
sys.path.insert(0, os.path.dirname(__file__))
from modeling import load_model
SAMPLES = {
"cmapss_FD001": torch.full((1, 30, 14), 0.5),
"cmapss_FD002": torch.full((1, 30, 14), 0.5),
"cmapss_FD003": torch.full((1, 30, 14), 0.5),
"cmapss_FD004": torch.full((1, 30, 14), 0.5),
"cwru": torch.linspace(-1, 1, 2048).reshape(1, 2048, 1),
}
VERIFICATION = {
"cmapss_FD001": {"value": 0.390998, "tol": 0.001},
"cmapss_FD002": {"value": 0.038257, "tol": 0.001},
"cmapss_FD003": {"value": 0.788864, "tol": 0.001},
"cmapss_FD004": {"value": 0.414077, "tol": 0.001},
"cwru": {"value": 0, "tol": 0.001},
}
EXPECTED_SHAPE = {
"cmapss_FD001": (1,),
"cmapss_FD002": (1,),
"cmapss_FD003": (1,),
"cmapss_FD004": (1,),
"cwru": (1, 10),
}
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--variant", default="cmapss_FD001", choices=list(SAMPLES))
ap.add_argument("--weights", default=os.environ.get("FELA_PDM_WEIGHTS", "."))
args = ap.parse_args()
model = load_model(args.weights, variant=args.variant)
x = SAMPLES[args.variant]
with torch.no_grad():
out = model(x)
exp = EXPECTED_SHAPE[args.variant]
if tuple(out.shape) != exp:
print(f"Fail: output shape {tuple(out.shape)} != expected {exp}")
sys.exit(1)
print(f"Shape OK: {tuple(out.shape)}")
g = VERIFICATION[args.variant]
if g["value"] is None:
if args.variant.startswith("cmapss"):
captured = float(out.reshape(-1)[0])
else:
captured = int(out.argmax(-1).item())
print(f"Captured output: {captured}")
print(
"Verification value is a placeholder. Paste this captured value into VERIFICATION and re-run to enable the check. Shape check passed."
)
return
if args.variant.startswith("cmapss"):
got = float(out.reshape(-1)[0])
if abs(got - g["value"]) > g["tol"]:
print(f"Fail: RUL {got} vs verification {g['value']} (tol {g['tol']})")
sys.exit(1)
else:
got = int(out.argmax(-1).item())
if got != g["value"]:
print(f"Fail: class {got} vs verification {g['value']}")
sys.exit(1)
print("Verification check OK")
if __name__ == "__main__":
main()