Error running export_larq_model.py
Closed this issue · 2 comments
I've trained QuickYOLOv2 on a custom dataset and now I'm trying to convert it to LCE/TFLite. Unfortunately, when I run python export_larq_model.py
, I get the following error:
ValueError: Input 0 of node model_1/batch_normalization_22/AssignNewValue was passed float from model_1/batch_normalization_22/FusedBatchNormV3/ReadVariableOp/resource:0 incompatible with expected resource.
Here's the full stack trace:
Traceback (most recent call last):
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\framework\importer.py", line 496, in _import_graph_def_internal
results = c_api.TF_GraphImportGraphDefWithResults(
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input 0 of node model_1/batch_normalization_22/AssignNewValue was passed float from model_1/batch_normalization_22/FusedBatchNormV3/ReadVariableOp/resource:0 incompatible with expected resource.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "export_larq_model.py", line 124, in <module>
flatbuffer_bytes = lce.convert_keras_model(yolo)
File "C:\Users\x\AppData\Local\Programs\Python\Python38\lib\site-packages\larq_compute_engine\mlir\python\converter.py", line 118, in convert_keras_model
frozen_func = convert_variables_to_constants_v2(func, lower_control_flow=False)
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\framework\convert_to_constants.py", line 1076, in convert_variables_to_constants_v2
return _construct_concrete_function(func, output_graph_def,
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\framework\convert_to_constants.py", line 1001, in _construct_concrete_function
new_func = wrap_function.function_from_graph_def(output_graph_def,
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\eager\wrap_function.py", line 650, in function_from_graph_def
wrapped_import = wrap_function(_imports_graph_def, [])
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\eager\wrap_function.py", line 621, in wrap_function
func_graph.func_graph_from_py_func(
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\framework\func_graph.py", line 990, in func_graph_from_py_func
func_outputs = python_func(*func_args, **func_kwargs)
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\eager\wrap_function.py", line 87, in __call__
return self.call_with_variable_creator_scope(self._fn)(*args, **kwargs)
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\eager\wrap_function.py", line 93, in wrapped
return fn(*args, **kwargs)
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\eager\wrap_function.py", line 648, in _imports_graph_def
importer.import_graph_def(graph_def, name="")
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\util\deprecation.py", line 538, in new_func
return func(*args, **kwargs)
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\framework\importer.py", line 400, in import_graph_def
return _import_graph_def_internal(
File "C:\Users\x\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\framework\importer.py", line 501, in _import_graph_def_internal
raise ValueError(str(e))
ValueError: Input 0 of node model_1/batch_normalization_22/AssignNewValue was passed float from model_1/batch_normalization_22/FusedBatchNormV3/ReadVariableOp/resource:0 incompatible with expected resource.
As for this issue, I wasn't able to replicate it locally... Will try again on Google Colab. These are your environment settings right?
quickyolov2 model
CUDA 11.2
CUDNN 8.1.1.33
Tensorflow 2.4.1
Larq 0.11.2
LCE 0.5.0
Yes, those are my environment settings. I have found a solution. Larq requires Tensorflow 2.3.0 and does not work properly with version 2.4.1.
Using pip install tensorflow==2.3.0
solved my problem.