使用 TensorFlow > 2.1 将 tfjs_layers_model 转换为 Keras 时出现 AttributeError

AttributeError when converting tfjs_layers_model to Keras with TensorFlow > 2.1

我想将 ml5 Json 模型转换为 keras 模型,以便再次转换为 tflite

所以我尝试使用 tfjs 转换器进行转换,但它不起作用

Windows10,Python 版本 3.6.8

json 文件 link : https://github.com/CodingTrain/website/tree/master/learning/ml5/7.2_pose_classifier/p5-multi/1%20-%20Data%20Collection/model2

我是这样输入的

python -m venv test
test\Scripts\activate
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools 
python -m pip install tensorflowjs
tensorflowjs_converter --input_format=tfjs_layers_model --output_format=keras_saved_model E:\h5\model\model.json E:\h5\outputs\

并且,这是错误消息

    2020-04-07 18:58:54.659000: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Traceback (most recent call last):
  File "C:\Users\Jun\AppData\Local\Programs\Python\Python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\Jun\AppData\Local\Programs\Python\Python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "E:\testvenv\Scripts\tensorflowjs_converter.exe\__main__.py", line 7, in <module>
  File "e:\testvenv\lib\site-packages\tensorflowjs\converters\converter.py", line 671, in pip_main
    main([' '.join(sys.argv[1:])])
  File "e:\testvenv\lib\site-packages\tensorflowjs\converters\converter.py", line 675, in main
    convert(argv[0].split(' '))
  File "e:\testvenv\lib\site-packages\tensorflowjs\converters\converter.py", line 636, in convert
    args.output_path)
  File "e:\testvenv\lib\site-packages\tensorflowjs\converters\converter.py", line 264, in dispatch_tensorflowjs_to_keras_saved_model_conversion
    model = keras_tfjs_loader.load_keras_model(config_json_path)
  File "e:\testvenv\lib\site-packages\tensorflowjs\converters\keras_tfjs_loader.py", line 217, in load_keras_model
    use_unique_name_scope=use_unique_name_scope)
  File "e:\testvenv\lib\site-packages\tensorflowjs\converters\keras_tfjs_loader.py", line 64, in _deserialize_keras_model
    model = tf.keras.models.model_from_json(json.dumps(model_topology_json))
  File "e:\testvenv\lib\site-packages\tensorflow_core\python\keras\saving\model_config.py", line 96, in model_from_json
    return deserialize(config, custom_objects=custom_objects)
  File "e:\testvenv\lib\site-packages\tensorflow_core\python\keras\layers\serialization.py", line 106, in deserialize
    printable_module_name='layer')
  File "e:\testvenv\lib\site-packages\tensorflow_core\python\keras\utils\generic_utils.py", line 292, in deserialize_keras_object
    config, module_objects, custom_objects, printable_module_name)
  File "e:\testvenv\lib\site-packages\tensorflow_core\python\keras\utils\generic_utils.py", line 254, in class_and_config_for_serialized_keras_object
    for key, item in cls_config.items():
AttributeError: 'list' object has no attribute 'items'

如何转换成功?

这似乎是 TensorFlow > 2.1 中 Keras 模型的当前问题。

与tensorflowjs_converter无关。他们目前似乎正在处理这个问题。

未决问题:

https://github.com/tensorflow/tensorflow/issues/38135

https://github.com/tensorflow/tensorflow/issues/35934

原因:

https://github.com/tensorflow/tensorflow/pull/38339