def main(): # First read the ONNX file if (len(sys.argv) < 2): print("TF python file unspecified.", file=sys.stderr) exit(1) file_name = sys.argv[1] file_path = 'models/' + file_name model_name = file_name[:-5] # name without the '.onnx' extension model = onnx.load(file_path) model = preprocess_for_tf(model) x = np.load('debug/' + model_name + '/' + model_name + '_input.npy') x = x.astype(np.float32) input_name = model.graph.input[0].name output_name = model.graph.output[0].name if (len(sys.argv) > 2): intermediate_layer_value_info = helper.ValueInfoProto() intermediate_layer_value_info_name = 'tf_' + sys.argv[2] intermediate_layer_value_info = helper.make_tensor_value_info( intermediate_layer_value_info_name, TensorProto.FLOAT, []) model.graph.output.extend([intermediate_layer_value_info]) output = prepare(model).run(x) pred = getattr(output, intermediate_layer_value_info_name) np.save('debug/' + model_name + '/' + model_name + '_debug', pred) with open('debug/onnx_debug.txt', 'w') as f: f.write(common.numpy_float_array_to_float_val_str(pred)) print("Saving the onnx runtime intermediate output for " + intermediate_layer_value_info.name) exit() output = prepare(model).run(x) pred = getattr(output, output_name) np.save('debug/' + model_name + '/' + model_name + '_output', pred) with open('debug/onnx_output.txt', 'w') as f: f.write(common.numpy_float_array_to_float_val_str(pred)) output_dims = common.proto_val_to_dimension_tuple(model.graph.output[0]) print("Saving the onnx runtime output of dimension " + str(output_dims))
file_name = sys.argv[1] file_path = 'models/' + file_name model_name = file_name[:-5] # name without the '.onnx' extension model = onnx.load(file_path) sess = onnxruntime.InferenceSession(file_path) x = np.load('debug/' + model_name + '/' + model_name + '_input.npy') x = x.astype(np.float32) input_name = model.graph.input[0].name if (len(sys.argv) > 2): intermediate_layer_value_info = helper.ValueInfoProto() intermediate_layer_value_info.name = sys.argv[2] model.graph.output.extend([intermediate_layer_value_info]) onnx.save(model, file_path + '_1') sess = onnxruntime.InferenceSession(file_path + '_1') pred = sess.run([intermediate_layer_value_info.name], {input_name: x}) np.save('debug/' + model_name + '/' + model_name + '_debug', pred) with open('debug/onnx_debug.txt', 'w') as f: f.write(common.numpy_float_array_to_float_val_str(pred)) print("Saving the onnx runtime intermediate output for " + intermediate_layer_value_info.name) exit() pred = sess.run(None, {input_name: x}) np.save('debug/' + model_name + '/' + model_name + '_output', pred) with open('debug/onnx_output.txt', 'w') as f: f.write(common.numpy_float_array_to_float_val_str(pred)) output_dims = common.proto_val_to_dimension_tuple(model.graph.output[0]) print("Saving the onnx runtime output of dimension " + str(output_dims))