Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
operation_map = {'Gemm':'Dense', 'Relu':'Activation', 'Tanh':'Activation', 'Sigmoid':'Activation',
'LeakyRelu':'LeakyReLU', 'ThresholdedRelu':'ThresholdedReLU', 'HardSigmoid':'Activation',
'Elu':'ELU', 'Selu':'Activation', 'PRelu':'PReLU', 'Softmax':'Activation', 'Softsign':'Activation', 'Softplus':'Activation',
'Sum':'Add', 'Sub':'Subtract', 'Max':'Maximum', 'Min':'Minimum', 'Mul':'Multiply', 'Concat':'Concatenate'}
#Define layers to skip for conversion to HLS
skip_layers = ['Squeeze', 'Unsqueeze', 'Dropout', 'Identity', 'Flatten', 'Transpose', 'Reshape']
#Map inputs of skipped layers
inputs_map = {}
passes = ['fuse_transpose_into_gemm', 'fuse_matmul_add_bias_into_gemm', 'eliminate_nop_transpose', 'fuse_consecutive_transposes']
model = shape_inference.infer_shapes(model) # have to infer shapes before optimizing the model
model = optimizer.optimize(model, passes)
model = shape_inference.infer_shapes(model) # have to infer shapes before optimizing the model
reader = ONNXDataReader(model)
#Loop through layers
layer_counter = 0
all_inputs = [x.name for x in model.graph.input]
all_initializers = [x.name for x in model.graph.initializer]
input_layers = [x for x in all_inputs if x not in all_initializers]
output_layers = [x.name for x in model.graph.output]
for i, inp in enumerate(input_layers):
input_layer = {}
input_layer['name'] = inp
input_layer['class_name'] = 'InputLayer'
inp_shape = next((x.type.tensor_type.shape.dim for x in model.graph.input if x.name == inp), None)
input_layer['input_shape'] = [x.dim_value for x in inp_shape]
if len(input_layer['input_shape']) > 1:
input_layer['input_shape'][0] = None