From 8acaf49498f84c821debd342e12d2a5d88f16467 Mon Sep 17 00:00:00 2001 From: Harsh Chauhan Date: Sat, 21 Mar 2026 23:36:17 +0530 Subject: [PATCH] fix: add error handling and logging to model generator scripts --- src/SOFIE_core/test/Conv1dModelGenerator.py | 31 +++++++++++++------ src/SOFIE_core/test/Conv2dModelGenerator.py | 31 +++++++++++++------ src/SOFIE_core/test/Conv3dModelGenerator.py | 31 +++++++++++++------ .../test/ConvTrans2dModelGenerator.py | 29 ++++++++++++----- src/SOFIE_core/test/LinearModelGenerator.py | 28 ++++++++++++----- .../test/RecurrentModelGenerator.py | 31 +++++++++++++------ 6 files changed, 130 insertions(+), 51 deletions(-) diff --git a/src/SOFIE_core/test/Conv1dModelGenerator.py b/src/SOFIE_core/test/Conv1dModelGenerator.py index 9f4a3ef..b7661da 100644 --- a/src/SOFIE_core/test/Conv1dModelGenerator.py +++ b/src/SOFIE_core/test/Conv1dModelGenerator.py @@ -2,12 +2,17 @@ ### generate COnv2d model using Pytorch +import sys +import os +import logging import numpy as np import argparse import torch import torch.nn as nn import torch.nn.functional as F +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") + result = [] @@ -132,12 +137,21 @@ def main(): torch.save({'model_state_dict':model.state_dict()}, name + ".pt") if saveOnnx: - torch.onnx.export( + onnx_file = name + ".onnx" + try: + torch.onnx.export( model, xinput, - name + ".onnx", + onnx_file, export_params=True - ) + ) + except Exception as e: + logging.error("Failed to export ONNX model %s: %s", onnx_file, e) + sys.exit(1) + if not os.path.isfile(onnx_file) or os.path.getsize(onnx_file) == 0: + logging.error("ONNX file %s was not created or is empty", onnx_file) + sys.exit(1) + logging.info("Exported %s", onnx_file) if loadModel : print('Loading model from file....') @@ -156,12 +170,11 @@ def main(): # for i in range(0,outSize): # print(float(yvec[i])) - f = open(name + ".out", "w") - for i in range(0,outSize): - f.write(str(float(yvec[i]))+" ") - - - + with open(name + ".out", "w") as f: + for i in range(0,outSize): + f.write(str(float(yvec[i]))+" ") + logging.info("Wrote %s.out", name) + if __name__ == '__main__': main() diff --git a/src/SOFIE_core/test/Conv2dModelGenerator.py b/src/SOFIE_core/test/Conv2dModelGenerator.py index b5d888d..91285c0 100644 --- a/src/SOFIE_core/test/Conv2dModelGenerator.py +++ b/src/SOFIE_core/test/Conv2dModelGenerator.py @@ -2,12 +2,17 @@ ### generate COnv2d model using Pytorch +import sys +import os +import logging import numpy as np import argparse import torch import torch.nn as nn import torch.nn.functional as F +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") + result = [] @@ -134,12 +139,21 @@ def main(): torch.save({'model_state_dict':model.state_dict()}, name + ".pt") if saveOnnx: - torch.onnx.export( + onnx_file = name + ".onnx" + try: + torch.onnx.export( model, xinput, - name + ".onnx", + onnx_file, export_params=True - ) + ) + except Exception as e: + logging.error("Failed to export ONNX model %s: %s", onnx_file, e) + sys.exit(1) + if not os.path.isfile(onnx_file) or os.path.getsize(onnx_file) == 0: + logging.error("ONNX file %s was not created or is empty", onnx_file) + sys.exit(1) + logging.info("Exported %s", onnx_file) if loadModel : print('Loading model from file....') @@ -158,12 +172,11 @@ def main(): # for i in range(0,outSize): # print(float(yvec[i])) - f = open(name + ".out", "w") - for i in range(0,outSize): - f.write(str(float(yvec[i]))+" ") - - - + with open(name + ".out", "w") as f: + for i in range(0,outSize): + f.write(str(float(yvec[i]))+" ") + logging.info("Wrote %s.out", name) + if __name__ == '__main__': main() diff --git a/src/SOFIE_core/test/Conv3dModelGenerator.py b/src/SOFIE_core/test/Conv3dModelGenerator.py index 1c6a177..68293fb 100644 --- a/src/SOFIE_core/test/Conv3dModelGenerator.py +++ b/src/SOFIE_core/test/Conv3dModelGenerator.py @@ -2,12 +2,17 @@ ### generate COnv2d model using Pytorch +import sys +import os +import logging import numpy as np import argparse import torch import torch.nn as nn import torch.nn.functional as F +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") + result = [] @@ -143,12 +148,21 @@ def main(): torch.save({'model_state_dict':model.state_dict()}, name + ".pt") if saveOnnx: - torch.onnx.export( + onnx_file = name + ".onnx" + try: + torch.onnx.export( model, xinput, - name + ".onnx", + onnx_file, export_params=True - ) + ) + except Exception as e: + logging.error("Failed to export ONNX model %s: %s", onnx_file, e) + sys.exit(1) + if not os.path.isfile(onnx_file) or os.path.getsize(onnx_file) == 0: + logging.error("ONNX file %s was not created or is empty", onnx_file) + sys.exit(1) + logging.info("Exported %s", onnx_file) if loadModel : print('Loading model from file....') @@ -167,12 +181,11 @@ def main(): # for i in range(0,outSize): # print(float(yvec[i])) - f = open(name + ".out", "w") - for i in range(0,outSize): - f.write(str(float(yvec[i]))+" ") - - - + with open(name + ".out", "w") as f: + for i in range(0,outSize): + f.write(str(float(yvec[i]))+" ") + logging.info("Wrote %s.out", name) + if __name__ == '__main__': main() diff --git a/src/SOFIE_core/test/ConvTrans2dModelGenerator.py b/src/SOFIE_core/test/ConvTrans2dModelGenerator.py index 0cc14e2..da17f36 100644 --- a/src/SOFIE_core/test/ConvTrans2dModelGenerator.py +++ b/src/SOFIE_core/test/ConvTrans2dModelGenerator.py @@ -2,12 +2,17 @@ ### generate COnv2d model using Pytorch +import sys +import os +import logging import numpy as np import argparse import torch import torch.nn as nn import torch.nn.functional as F +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") + result = [] @@ -137,12 +142,21 @@ def main(): torch.save({'model_state_dict':model.state_dict()}, name + ".pt") if saveOnnx: - torch.onnx.export( + onnx_file = name + ".onnx" + try: + torch.onnx.export( model, xinput, - name + ".onnx", + onnx_file, export_params=True - ) + ) + except Exception as e: + logging.error("Failed to export ONNX model %s: %s", onnx_file, e) + sys.exit(1) + if not os.path.isfile(onnx_file) or os.path.getsize(onnx_file) == 0: + logging.error("ONNX file %s was not created or is empty", onnx_file) + sys.exit(1) + logging.info("Exported %s", onnx_file) if loadModel : print('Loading model from file....') @@ -161,11 +175,10 @@ def main(): # for i in range(0,outSize): # print(float(yvec[i])) - f = open(name + ".out", "w") - for i in range(0,outSize): - f.write(str(float(yvec[i]))+" ") - - + with open(name + ".out", "w") as f: + for i in range(0,outSize): + f.write(str(float(yvec[i]))+" ") + logging.info("Wrote %s.out", name) if __name__ == '__main__': diff --git a/src/SOFIE_core/test/LinearModelGenerator.py b/src/SOFIE_core/test/LinearModelGenerator.py index ff4fa76..60a0ffa 100644 --- a/src/SOFIE_core/test/LinearModelGenerator.py +++ b/src/SOFIE_core/test/LinearModelGenerator.py @@ -2,12 +2,17 @@ ### generate COnv2d model using Pytorch +import sys +import os +import logging import numpy as np import argparse import torch import torch.nn as nn import torch.nn.functional as F +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") + result = [] @@ -120,12 +125,21 @@ def main(): torch.save({'model_state_dict':model.state_dict()}, name + ".pt") if saveOnnx: - torch.onnx.export( + onnx_file = name + ".onnx" + try: + torch.onnx.export( model, xinput, - name + ".onnx", + onnx_file, export_params=True - ) + ) + except Exception as e: + logging.error("Failed to export ONNX model %s: %s", onnx_file, e) + sys.exit(1) + if not os.path.isfile(onnx_file) or os.path.getsize(onnx_file) == 0: + logging.error("ONNX file %s was not created or is empty", onnx_file) + sys.exit(1) + logging.info("Exported %s", onnx_file) if loadModel : print('Loading model from file....') @@ -143,10 +157,10 @@ def main(): yvec = y.reshape([outSize]) - f = open(name + ".out", "w") - for i in range(0,outSize): - f.write(str(float(yvec[i]))+" ") - + with open(name + ".out", "w") as f: + for i in range(0,outSize): + f.write(str(float(yvec[i]))+" ") + logging.info("Wrote %s.out", name) if __name__ == '__main__': diff --git a/src/SOFIE_core/test/RecurrentModelGenerator.py b/src/SOFIE_core/test/RecurrentModelGenerator.py index b1ccf7b..db069b0 100644 --- a/src/SOFIE_core/test/RecurrentModelGenerator.py +++ b/src/SOFIE_core/test/RecurrentModelGenerator.py @@ -2,12 +2,17 @@ ### generate COnv2d model using Pytorch +import sys +import os +import logging import numpy as np import argparse import torch import torch.nn as nn import torch.nn.functional as F +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") + result = [] verbose=False @@ -132,12 +137,21 @@ def main(): torch.save({'model_state_dict':model.state_dict()}, name + ".pt") if saveOnnx: - torch.onnx.export( + onnx_file = name + ".onnx" + try: + torch.onnx.export( model, xinput, - name + ".onnx", + onnx_file, export_params=True - ) + ) + except Exception as e: + logging.error("Failed to export ONNX model %s: %s", onnx_file, e) + sys.exit(1) + if not os.path.isfile(onnx_file) or os.path.getsize(onnx_file) == 0: + logging.error("ONNX file %s was not created or is empty", onnx_file) + sys.exit(1) + logging.info("Exported %s", onnx_file) if loadModel : print('Loading model from file....') @@ -154,12 +168,11 @@ def main(): outSize = y.nelement() yvec = y.reshape([outSize]) - f = open(name + ".out", "w") - for i in range(0,outSize): - f.write(str(float(yvec[i]))+" ") - - - + with open(name + ".out", "w") as f: + for i in range(0,outSize): + f.write(str(float(yvec[i]))+" ") + logging.info("Wrote %s.out", name) + if __name__ == '__main__': main()