def convert_from_keras_model(model, backend, output_dir='my-hls-test', project_name='myproject', fpga_part='xcku115-flvb2104-2-i', clock_period=5, hls_config={}): config = create_config(output_dir=output_dir, project_name=project_name, backend=backend.name, fpga_part=fpga_part, clock_period=clock_period) config['KerasModel'] = model model_config = hls_config.get('Model', None) if model_config is not None: if not all(k in model_config for k in ('Precision', 'ReuseFactor')): raise Exception('Precision and ReuseFactor must be provided in the hls_config') else: model_config = {} model_config['Precision'] = backend.get_pstring(16,6) model_config['ReuseFactor'] = '1' config['HLSConfig']['Model'] = model_config if 'LayerName' in hls_config: config['HLSConfig']['LayerName'] = hls_config['LayerName'] if 'LayerType' in hls_config: config['HLSConfig']['LayerType'] = hls_config['LayerType'] if 'Optimizers' in hls_config: config['HLSConfig']['Optimizers'] = hls_config['Optimizers'] return keras_to_hls(config)
def convert_from_keras_model(model, output_dir='my-hls-test', project_name='myproject', input_data_tb=None, output_data_tb=None, backend='Vivado', hls_config={}, **kwargs): """Convert to hls4ml model based on the provided configuration. Args: model: Keras model to convert output_dir (str, optional): Output directory of the generated HLS project. Defaults to 'my-hls-test'. project_name (str, optional): Name of the HLS project. Defaults to 'myproject'. input_data_tb (str, optional): String representing the path of input data in .npy or .dat format that will be used during csim and cosim. output_data_tb (str, optional): String representing the path of output data in .npy or .dat format that will be used during csim and cosim. backend (str, optional): Name of the backend to use, e.g., 'Vivado' or 'Quartus'. board (str, optional): One of target boards specified in `supported_board.json` file. If set to `None` a default device of a backend will be used. See documentation of the backend used. part (str, optional): The FPGA part. If set to `None` a default part of a backend will be used. See documentation of the backend used. Note that if `board` is specified, the part associated to that board will overwrite any part passed as a parameter. clock_period (int, optional): Clock period of the design. Defaults to 5. io_type (str, optional): Type of implementation used. One of 'io_parallel' or 'io_serial'. Defaults to 'io_parallel'. hls_config (dict, optional): The HLS config. kwargs** (dict, optional): Additional parameters that will be used to create the config of the specified backend Raises: Exception: If precision and reuse factor are not present in 'hls_config' Returns: ModelGraph: hls4ml model. """ config = create_config(output_dir=output_dir, project_name=project_name, backend=backend, **kwargs) config['KerasModel'] = model config['InputData'] = input_data_tb config['OutputPredictions'] = output_data_tb config['HLSConfig'] = {} model_config = hls_config.get('Model', None) config['HLSConfig']['Model'] = _check_model_config(model_config) _check_hls_config(config, hls_config) return keras_to_hls(config)
def convert_from_onnx_model(model, output_dir='my-hls-test', project_name='myproject', input_data_tb=None, output_data_tb=None, backend='Vivado', board=None, part=None, clock_period=5, io_type='io_parallel', hls_config={}, **kwargs): """ Convert an ONNX model to a hls model. Parameters ---------- model : ONNX model object. Model to be converted to hls model object. output_dir (str, optional): Output directory of the generated HLS project. Defaults to 'my-hls-test'. project_name (str, optional): Name of the HLS project. Defaults to 'myproject'. input_data_tb (str, optional): String representing the path of input data in .npy or .dat format that will be used during csim and cosim. output_data_tb (str, optional): String representing the path of output data in .npy or .dat format that will be used during csim and cosim. backend (str, optional): Name of the backend to use, e.g., 'Vivado' or 'Quartus'. board (str, optional): One of target boards specified in `supported_board.json` file. If set to `None` a default device of a backend will be used. See documentation of the backend used. part (str, optional): The FPGA part. If set to `None` a default part of a backend will be used. See documentation of the backend used. Note that if `board` is specified, the part associated to that board will overwrite any part passed as a parameter. clock_period (int, optional): Clock period of the design. Defaults to 5. io_type (str, optional): Type of implementation used. One of 'io_parallel' or 'io_serial'. Defaults to 'io_parallel'. hls_config (dict, optional): The HLS config. kwargs** (dict, optional): Additional parameters that will be used to create the config of the specified backend Returns ------- hls_model : hls4ml model object. See Also -------- hls4ml.convert_from_keras_model, hls4ml.convert_from_pytorch_model Examples -------- >>> import hls4ml >>> config = hls4ml.utils.config_from_onnx_model(model, granularity='model') >>> hls_model = hls4ml.converters.convert_from_onnx_model(model, hls_config=config) """ config = create_config(output_dir=output_dir, project_name=project_name, board=board, part=part, clock_period=clock_period, io_type=io_type, backend=backend, **kwargs) config['OnnxModel'] = model config['InputData'] = input_data_tb config['OutputPredictions'] = output_data_tb config['HLSConfig'] = {} model_config = hls_config.get('Model', None) config['HLSConfig']['Model'] = _check_model_config(model_config) _check_hls_config(config, hls_config) return onnx_to_hls(config)