0

我正在尝试重用由 tensorflow 创建的 tensorflowjs 模型。为了了解转换器的工作原理,我尝试转换 mobilenetv2 模型:

tensorflowjs_converter --input_format=tf_hub --output_format=tensorflowjs   'https://tfhub.dev/google/imagenet/mobilenet_v2_050_224/classification/2' ./web_model

这似乎行得通。然后我尝试通过更改模型的加载方式在mobilenet 演示中使用这个新的转换模型:

// const model = await mobilenet.load({version, alpha});
// replaced by
const model = await mobilenet.load({ modelUrl: './web_model/model.json', version, alpha, inputRange: [0, 1], fromTFHub: true });

// Classify the image.
const predictions = await model.classify(img);

分类调用触发错误:

Uncaught (in promise) Error: Activation relu6 has not been implemented for the WebGL backend.

我不知道官方的 tensorflowjs mobilenet 模型是如何生成的:(

4

3 回答 3

0

此问题与新版本无关。我有同样的问题,转了一圈。如果您在 GPU 运行时(我使用 Colab GPU 运行时)中工作,则会发生此问题。您只需在 CPU 模式下 fit/fit_generate 模型,您的模型就会在快乐状态下准备就绪。

于 2019-10-04T20:22:17.647 回答
0
from keras.applications import MobileNetV2
model = MobileNetV2(weights='imagenet', include_top=False)

save_model(
    model,
    "mobilenet2.h5",
    overwrite=True,
)

将mobilenet特征提取器转换为js

tensorflowjs_converter --input_format keras \
                       path/to/mobilenet2.h5 \
                       path/to/tfjs_target_dir
于 2019-09-13T12:28:29.030 回答
0

的运算符是relu61 周前刚刚添加的。它应该在下一个 TensorFlow.js 版本中可用。

发布后请尝试使用最新版本。

见:https ://github.com/tensorflow/tfjs/pull/2016

于 2019-09-18T02:33:37.487 回答