def predictor_from_cntk_model(modelFile, plotModel=False): """Loads a CNTK model and returns an ell.neural.NeuralNetworkPredictor""" _logger = logger.get() _logger.info("Loading...") z = load_model(modelFile) _logger.info("\nFinished loading.") if plotModel: filename = os.path.join(os.path.dirname(modelFile), os.path.basename(modelFile) + ".svg") cntk_utilities.plot_model(z, filename) _logger.info("Pre-processing...") modelLayers = cntk_utilities.get_model_layers(z) # Get the relevant CNTK layers that we will convert to ELL layersToConvert = cntk_layers.get_filtered_layers_list(modelLayers) _logger.info("\nFinished pre-processing.") predictor = None try: # Create a list of ELL layers from the CNTK layers ellLayers = cntk_layers.convert_cntk_layers_to_ell_layers( layersToConvert) # Create an ELL neural network predictor from the layers predictor = ell.neural.NeuralNetworkPredictor(ellLayers) except BaseException as exception: _logger.error("Error occurred attempting to convert cntk layers to ELL layers: " + str(exception)) raise exception return predictor
def run(self): self.report = open("report.md", "w") self.report.write("# Comparison Results\n") self.report.write("**model**: %s\n\n" % (self.model_file)) if self.image_file is not None: self.image = self.load_image(self.image_file) self.report.write("**image**: %s\n\n" % (self.image_file)) self.cntk_model = cntk.load_model(self.model_file) modelLayers = cntk_utilities.get_model_layers(self.cntk_model) # Get the relevant CNTK layers that we will convert to ELL layersToConvert = cntk_layers.get_filtered_layers_list(modelLayers) self.logger.info( "----------------------------------------------------------------------------------" ) if self.layers: for layer in layersToConvert: self.compare_layer(layer) else: self.compare_model(layersToConvert) self.print_top_result() self.report.close()