【问题标题】:TypeError: The JSON content is required to be a `dict`, but found <class 'list'>TypeError: JSON 内容必须是 `dict`,但发现 <class 'list'>
【发布时间】:2019-12-05 06:06:24
【问题描述】:

当我在 Python 3.7 中运行“tensorflowjs_converter”时。 报错:

TypeError: JSON内容需要是dict,但是找到了class'list'。

我想把json的文件转换成keras_save_model:

tensorflowjs_converter --input_format tfjs_layers_model --output_format keras_saved_model tiny_face_js/tiny_face_detector_model-weights_manifest.json tiny_face_h5

但它失败了,我查看了 json 文件。

[{"weights":[{"name":"conv0/filters","shape":[3,3,3,16],"dtype":"float32","quantization":{"dtype ":"uint8","scale":0.009007044399485869,"min":-1.2069439495311063}},{"name":"conv0/bias","shape":[16],"dtype":"float32","quantization ":{"dtype":"uint8","scale":0.005263455241334205,"min":-0.9211046672334858}},{"name":"conv1/depthwise_filter","shape":[3,3,16,1] ,"dtype":"float32","quantization":{"dtype":"uint8","scale":0.004001977630690033,"min":-0.5042491814669441}},{"name":"conv1/pointwise_filter","shape ":[1,1,16,32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.013836609615999109,"min":-1.411334180831909}},{"名称":"conv1/bias","shape":[32],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0015159862590771096,"min":-0.30926119685173037 }},{"name":"conv2/depthwise_filter","shape":[3,3,32,1],"dtype":"float32","quantization":{"dtype":"uint8"," scale":0.002666276225856706,"min":-0.317286870876948}},{"name":"conv2/pointwise_filter","shape":[1,1,32,64],"dtype":"float32","qu抗化":{"dtype":"uint8","scale":0.015265831292844286,"min":-1.6792414422128714}},{"name":"conv2/bias","shape":[64],"dtype": "float32","quantization":{"dtype":"uint8","scale":0.0020280554598453,"min":-0.37113414915168985}},{"name":"conv3/depthwise_filter","shape":[3, 3,64,1],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.006100742489683862,"min":-0.8907084034938438}},{"name":"conv3 /pointwise_filter","shape":[1,1,64,128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.016276211832083907,"min":-2.0508026908425725} },{"name":"conv3/bias","shape":[128],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.003394414279975143,"min ":-0.7637432129944072}},{"name":"conv4/depthwise_filter","shape":[3,3,128,1],"dtype":"float32","quantization":{"dtype":"uint8" "scale":0.006716050119961009,"min":-0.8059260143953211}},{"name":"conv4/pointwise_filter","shape":[1,1,128,256],"dtype":"float32","quantization":{ "dtype":"uint8","scale":0.021875603993733724,"min":-2.887579727 1728514}},{"name":"conv4/bias","shape":[256],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.0041141652009066415, "min":-0.8187188749804216}},{"name":"conv5/depthwise_filter","shape":[3,3,256,1],"dtype":"float32","quantization":{"dtype":" uint8","scale":0.008423839597141042,"min":-0.9013508368940915}},{"name":"conv5/pointwise_filter","shape":[1,1,256,512],"dtype":"float32","quantization" :{"dtype":"uint8","scale":0.030007277283014035,"min":-3.8709387695088107}},{"name":"conv5/bias","shape":[512],"dtype":"float32 ","quantization":{"dtype":"uint8","scale":0.008402082966823203,"min":-1.4871686851277068}},{"name":"conv8/filters","shape":[1,1,512, 25],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.028336129469030042,"min":-4.675461362389957}},{"name":"conv8/bias", "shape":[25],"dtype":"float32","quantization":{"dtype":"uint8","scale":0.002268134028303857,"min":-0.41053225912299807}}],"paths":[ "tiny_face_detector_model-shard1"]}]

我试图删除“[]”,它报告:

Traceback(最近一次调用最后一次):文件 “e:\users\admin\anaconda3\envs\ai_python3.7\lib\runpy.py”,第 193 行, 在 _run_module_as_main "ma​​in", mod_spec) 文件 "e:\users\admin\anaconda3\envs\ai_python3.7\lib\runpy.py",第 85 行,在 _run_code exec(code, run_globals) 文件 "C:\Users\admin\AppData\Roaming\Python\Python37\Scripts\tensorflowjs_converter.exe__main__.py", 第 7 行,在文件中 "C:\Users\admin\AppData\Roaming\Python\Python37\site-packages\tensorflowjs\converters\converter.py", 第 638 行,在 pip_main main([' '.join(sys.argv[1:])]) 文件 "C:\Users\admin\AppData\Roaming\Python\Python37\site-packages\tensorflowjs\converters\converter.py", 第 642 行,主要 convert(argv[0].split(' ')) 文件 "C:\Users\admin\AppData\Roaming\Python\Python37\site-packages\tensorflowjs\converters\converter.py", 第 605 行,转换中 args.output_path) 文件 "C:\Users\admin\AppData\Roaming\Python\Python37\site-packages\tensorflowjs\converters\converter.py", 第 257 行,在 dispatch_tensorflowjs_to_keras_saved_model_conversion 模型 = keras_tfjs_loader.load_keras_model(config_json_path) 文件 "C:\Users\admin\AppData\Roaming\Python\Python37\site-packages\tensorflowjs\converters\keras_tfjs_loader.py", 第 194 行,在 load_keras_model 中 _check_config_json(config_json) 文件 "C:\Users\admin\AppData\Roaming\Python\Python37\site-packages\tensorflowjs\converters\keras_tfjs_loader.py", 第 96 行,在 _check_config_json raise KeyError('JSON 内容中缺少字段“modelTopology”。') KeyError: 'JSON 中缺少字段“modelTopology” 内容。' 有什么办法可以解决这个问题吗?

感谢和问候! 军燕

【问题讨论】:

  • 不是您作为参数输入的manifest.json,而是包含模型拓扑的model.json

标签: tensorflow.js


【解决方案1】:

指定tfjs_layers_model为输入格式时,输入应为tfjs-converter预先生成的model.json。格式如下。

{
  "format": "layers-model",
  "generatedBy": "1.13.1",
  "convertedBy": "TensorFlow.js Converter v1.4.0",
  "userDefinedMetadata": {
    //...
  }
}

请注意,tfjs_layers_model 仅由keraskeras_saved_model 创建,层模型不支持tf_saved_model。创建图层模型的命令可能如下所示。

$ tensorflowjs_converter \
    --input_format=keras \
    --output_format=tfjs_layers_model \
    /path/to/keras_model \
    /path/to/tfjs_model

然后你可以像这样重新创建 keras 模型。

$ tensorflowjs_converter \
    --input_format tfjs_layers_model \
    --output_format keras_saved_model \
    /path/to/tfjs_model/model.json \
    /path/to/tiny_face_h5

查看详情:Converting a TensorFlow SavedModel, TensorFlow Hub module, Keras HDF5 or tf.keras SavedModel to a web-friendly format

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多