TensorSpace.js
开始使用
基本概念
TensorSpace Converter
模型预处理
模型
网络层
网络层融合
使用样例
这部分将介绍如何使用 TensorSpace-Converter 来处理不同类型的模型。TensorSpace 支持预处理使用 TensorFlow, Keras, TensorFlow.js 训练的模型。
TensorFlow
当使用 TensorFlow 训练并保存一个模型时,TensorSpace-Converter 支持转化以下格式的模型:saved model,frozen model,模型结构权重合并的 HDF5,模型结构和权重分开保存的 HDF5。TensorSpace-Converter 使用不同的转换指令来转换这四种模型。在 TensorFlow 的图结构中,可能没有 layer 的概念,不过,一个特定的 tensor 可以对应一个 layer 的输出,在这种情况下,可以取出相对应的 tensor 名称,然后设置到 TensorSpace-Converter 的 output_layer_names 参数中。
tf.keras model
对于模型结构和权重合并保存的 HDF5 模型,会有一个 xxx.h5 文件。在配置 TensorSpace-Converter 转换脚本时,将 input_model_format 设置成 tf_keras。示例转化脚本:
$ tensorspacejs_converter \
    --input_model_from="tensorflow" \
    --input_model_format="tf_keras" \
    --output_layer_names="layer1Name,layer2Name,layer3Name" \
    ./PATH/TO/MODEL/xxx.h5 \
    ./PATH/TO/SAVE/DIR
tf.keras (separated)
对于模型结构和权重分开保存的 HDF5 模型,会有一个模型结构文件 xxx.json 和一个权重文件 eee.h5。在配置 TensorSpace-Converter 转换脚本时,将 input_model_format 设置成 tf_keras_separated。对于这种模型类型,因为由两个模型文件,在设置 TensorSpace-Converter 的 input_path 时,合并两个文件的路径,并用英文半角逗号“,”分开,将 .json 文件的路径在前,.h5 文件的路径在后。示例转化脚本:
$ tensorspacejs_converter \
    --input_model_from="tensorflow" \
    --input_model_format="tf_keras_separated" \
    --output_layer_names="layer1Name,layer2Name,layer3Name" \
    ./PATH/TO/MODEL/xxx.json,./PATH/TO/MODEL/eee.h5 \
    ./PATH/TO/SAVE/DIR
frozen model
对于 TensorFlow frozen model。在配置 TensorSpace-Converter 转换脚本时,将 input_model_format 设置成 tf_frozen。示例转化脚本:
$ tensorspacejs_converter \
    --input_model_from="tensorflow" \
    --input_model_format="tf_frozen" \
    --output_layer_names="layer1Name,layer2Name,layer3Name" \
    ./PATH/TO/MODEL/xxx.pb \
    ./PATH/TO/SAVE/DIR
saved model
对于 TensorFlow saved model。在配置 TensorSpace-Converter 转换脚本时,将 input_model_format 设置成 tf_saved。示例转化脚本:
$ tensorspacejs_converter \
    --input_model_from="tensorflow" \
    --input_model_format="tf_saved" \
    --output_layer_names="layer1Name,layer2Name,layer3Name" \
    ./PATH/TO/SAVED/MODEL/FOLDER \
    ./PATH/TO/SAVE/DIR
这篇 TensorFlow 预处理教程,通过一个实际的例子,介绍了如何使用 TensorSpace-Converter 来预处理 TensorFlow 模型。
Keras
当使用 Keras 训练并生成一个模型时,模型有两种保存形式:模型结构和权重保存在一个HDF5文件,模型结构和权重保存在不同的文件中。TensorSpace-Converter 使用不同的转换指令来转换这两种模型。
Combined .h5
对于一个 Keras 模型,如果模型结构和权重保存在同一个 HDF5 文件中,模型将会是 xxx.h5。在配置 TensorSpace-Converter 转换脚本时,将 input_model_format 设置成 topology_weights_combined。示例转换代码:
$ tensorspacejs_converter \
    --input_model_from="keras" \
    --input_model_format="topology_weights_combined" \
    --output_layer_names="layer1Name,layer2Name,layer3Name" \
    ./PATH/TO/MODEL/xxx.h5 \
    ./PATH/TO/SAVE/DIR
Separated .json & .h5
对于一个 Keras 模型,如果模型结构和权重分开保存,那么会有一个模型结构文件 xxx.json 和一个模型权重文件 xxx.h5。在配置 TensorSpace-Converter 转换脚本时,将 input_model_format 设置成 topology_weights_separated。对于这种模型类型,因为由两个模型文件,在设置 TensorSpace-Converter 的 input_path 时,合并两个文件的路径,并用英文半角逗号“,”分开,将 .json 文件的路径在前,.h5 文件的路径在后。示例转换代码:
$ tensorspacejs_converter \
    --input_model_from="keras" \
    --input_model_format="topology_weights_separated" \
    --output_layer_names="layer1Name,layer2Name,layer3Name" \
    ./PATH/TO/MODEL/xxx.json,./PATH/TO/MODEL/eee.h5 \
    ./PATH/TO/SAVE/DIR
这篇 Keras 预处理教程,通过一个实际的例子,介绍了如何使用 TensorSpace-Converter 来预处理 Keras 模型。
TensorFlow.js
当使用 TensorFlow.js 训练并保存一个模型后,会得到一个模型结构文件 xxx.json 和一些权重文件 xxx.weight.bin。当使用 TensorSpace-Converter 来预处理这类模型时,需要将模型结构文件(xxx.json)和权重文件(xxx.weight.bin)放在同一个目录下,然后将模型结构文件的路径设置为 input_path。示例转换代码:
$ tensorspacejs_converter \
    --input_model_from="tfjs" \
    --output_layer_names="layer1Name,layer2Name,layer3Name" \
    ./PATH/TO/MODEL/xxx.json \
    ./PATH/TO/SAVE/DIR
这篇 TensorFlow.js 预处理教程,通过一个实际的例子,介绍了如何使用 TensorSpace-Converter 来预处理 TensorFlow.js 模型。