TransWikia.com

TensorFlow学習モデルをブラウザ用に変換する際にエラーになる

スタック・オーバーフロー Asked by deigo on January 4, 2022

ブラウザ上で動作する、多言語向けのニューラル機械翻訳を実装したいと思っています。
一般的な実装方法であればGoogleAPIにキーワードを渡して翻訳結果を受け取るものと思いますが、
事情により通信を介しての翻訳ができません。
そこで、下記手段により実現できないかどうかを考えております。

  • 外部で学習したモデルをTensorflow.js用の形式に変換
  • Tensorflow.jsで上記モデルを呼び出し
  • キーワードをモデルに渡して翻訳結果を得る

実施したこと
学習済みモデルを入手し、tensorflowjs converterでTensorflow.js用に変換する
翻訳に利用できそうなモデルを2つ確認しました。

いずれもtensorflowjs converterでの変換は失敗しました。

!tensorflowjs_converter --input_format tf_hub --signature_name serving_default 'https://tfhub.dev/google/LaBSE/1' ./my_tfjs_model

Traceback (most recent call last):
  File "/usr/local/bin/tensorflowjs_converter", line 8, in <module>
    sys.exit(pip_main())
  File "/usr/local/lib/python3.6/dist-packages/tensorflowjs/converters/converter.py", line 735, in pip_main
    main([' '.join(sys.argv[1:])])
  File "/usr/local/lib/python3.6/dist-packages/tensorflowjs/converters/converter.py", line 739, in main
    convert(argv[0].split(' '))
  File "/usr/local/lib/python3.6/dist-packages/tensorflowjs/converters/converter.py", line 692, in convert
    control_flow_v2=args.control_flow_v2)
  File "/usr/local/lib/python3.6/dist-packages/tensorflowjs/converters/tf_saved_model_conversion_v2.py", line 661, in convert_tf_hub_module
    control_flow_v2=control_flow_v2)
  File "/usr/local/lib/python3.6/dist-packages/tensorflowjs/converters/tf_saved_model_conversion_v2.py", line 494, in convert_tf_saved_model
    weight_shard_size_bytes=weight_shard_size_bytes)
  File "/usr/local/lib/python3.6/dist-packages/tensorflowjs/converters/tf_saved_model_conversion_v2.py", line 143, in optimize_graph
    ', '.join(unsupported))
ValueError: Unsupported Ops in the model before optimization
StatefulPartitionedCall
import tensorflowjs as tfjs 

module_url = 'https://tfhub.dev/google/universal-sentence-encoder-multilingual/3' 
model = hub.load(module_url)

tfjs.converters.save_keras_model(model, 'tfjs', quantization_dtype_map=np.uint8)

    338   """
    339   temp_h5_path = tempfile.mktemp() + '.h5'
--> 340   model.save(temp_h5_path)
    341   topology_json, weight_groups = (
    342       h5_merged_saved_model_to_tfjs_format(temp_h5_path))

AttributeError: '_UserObject' object has no attribute 'save'

上記のとおり、実装の前段階のモデルの入手がうまくいっておりません。
ニューラル機械翻訳の事例すらほとんど見つけられていません。

バージョン

TensorFlow:2.2.0
Tensorflowjs: 2.0.1.post1

解決したいこと

  • ブラウザ上で利用可能な、学習モデルを入手したいです。

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP