huan/emoji-net

Convert a @tensorflow/tfjs-converter@0.2 frozen model to @tensorflow/tfjs@3.8 version

huan opened this issue · 0 comments

huan commented

The Emoji Scavenger Hunt open-source project has a great pre-trained mode but it's a deprecated frozen model format with old @tensorflow/tfjs-convert@0.2 version.

I want to upgrade to @tensorflow/tfjs@3.8 so we need to upgrade it.

See:

Steps

1. Get a Python 2.7 environment

$ docker run --rm -ti -v $(pwd):/model ubuntu:18.04 bash
$ apt update && apt install -y python python-pip

2. Install

$ pip install tensorflowjs==0.8.5
$ tensorflowjs_converter --version
Using TensorFlow backend.

tensorflowjs 0.8.5

Dependency versions:
  keras 2.2.2
  tensorflow 1.13.1

3. Convert

# tensorflowjs_converter \
>     --input_format=tf_frozen_model \
>     --output_node_names final_result \
>     ./tensorflowjs_model.pb \
>     ./web
Using TensorFlow backend.
Traceback (most recent call last):
  File "/usr/local/bin/tensorflowjs_converter", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/tensorflowjs/converters/converter.py", line 352, in main
    strip_debug_ops=FLAGS.strip_debug_ops)
  File "/usr/local/lib/python2.7/dist-packages/tensorflowjs/converters/tf_saved_model_conversion_pb.py", line 329, in convert_tf_frozen_model
    graph = load_graph(frozen_model_path, output_node_names)
  File "/usr/local/lib/python2.7/dist-packages/tensorflowjs/converters/tf_saved_model_conversion_pb.py", line 67, in load_graph
    tf.import_graph_def(graph_def, name='')
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/importer.py", line 430, in import_graph_def
    raise ValueError(str(e))
ValueError: Cannot reshape a tensor with 1001 elements to shape [0,0] (0 elements) for 'MobilenetV1/Predictions/Reshape' (op: 'Reshape') with input shapes: [1,1001], [2] and with input tensors computed as partial shapes: input[1] = [0,0].