一般TensorFlow的模型,以Python版本为例,会被存储为以下四种格式之一:
Google 目前最佳实践中,推荐使用 SavedModel 方法进行模型保存。同时所有以上格式,都可以通过 tensorflowjs-converter 转换器,将其转换为可以直接被 TensorFlow.js 加载的格式,在JavaScript语言中进行使用。
tensorflowjs_converter
可以将Python存储的模型格式,转换为JavaScript可以直接调用的模型格式。
安装tensorflowjs_converter
:
pip install tensorflowjs
tensorflowjs_converter
的使用细节,可以通过--help
参数查看程序帮助:
tensorflowjs_converter --help
以下我们以MobilenetV1为例,看一下如何对模型文件进行转换操作,并将可以被TensorFlow.js加载的模型文件,存放到/mobilenet/tfjs_model
目录下。
将/mobilenet/saved_model
转换到/mobilenet/tfjs_model
:
tensorflowjs_converter \
--input_format=tf_saved_model \
--output_node_names='MobilenetV1/Predictions/Reshape_1' \
--saved_model_tags=serve \
/mobilenet/saved_model \
/mobilenet/tfjs_model
将https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/1
转换到/mobilenet/tfjs_model
:
tensorflowjs_converter \
--input_format=tf_hub \
'https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/1' \
/mobilenet/tfjs_model
将/tmp/model.h5
转换到/tmp/tfjs_model
:
tensorflowjs_converter \
--input_format keras \
/tmp/model.h5 \
/tmp/tfjs_model
为了加载转换完成的模型文件,我们需要安装tfjs-converter
和@tensorflow/tfjs
模块:
npm install @tensorflow/tfjs
然后,我们就可以通过JavaScript来加载TensorFlow模型了!
import * as tf from '@tensorflow/tfjs';
const MODEL_URL = 'model_directory/model.json';
const model = await tf.loadGraphModel(MODEL_URL);
// 对Keras或者tfjs原生的层模型,使用下面的加载函数:
// const model = await tf.loadLayersModel(MODEL_URL);
const cat = document.getElementById('cat');
model.execute(tf.browser.fromPixels(cat))