

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

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

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

  * <https://tfhub.dev/google/LaBSE/1>
  * <https://tfhub.dev/google/universal-sentence-encoder-multilingual-large/3>

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

[code]

    !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
    
[/code]

[code]

    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'
    
[/code]

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

**バージョン**

[code]

    TensorFlow：2.2.0
    Tensorflowjs: 2.0.1.post1
    
[/code]

**解決したいこと**

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


CC BY-SA 4.0
2020-07-24T19:07:04.587
68921
2020-07-25T17:05:27.443
2020-07-25T17:05:27.443
41239
41239
question
javascript tensorflow 深層学習
TensorFlow学習モデルをブラウザ用に変換する際にエラーになる