TensorFlowモデルの保存ピット

2785 ワード

最近は仕事が必要で、tenssorflow(r 1.3)の中のcontribのあるライブラリを使って、tf公式サイトによると、goバージョンはpyバージョンのトレーニングのモデルしか呼び出しられません.個人はgoに対して熟知していて、オンライン環境でgoをサービスするので、go調pythonで訓練したモデルを使いたいです.
python import tfとtf.co ntrib関連ライブラリを使用して、tf.saved_を使用します.model.builder.SavedModelBuiderはモデルを保存しますが、goを使ってLoadSavedModelを使うと、Not found Op type not registered 'CountExtremelyRandomStats'のようなエラーが報告されます.具体的にはlibtenssor flowの中にCountExtremelyRandomStatsのopが見つけられません.
いろいろな案を試みて、省略しました.最終的に問題が発見されたのは、TensorFlowがBUILD target:libtenssor flow.soにいた時、contribに関する内容を入力していませんでした.ルートBUILDファイルのlibtenssor flow.so部分を修正すると以下のようになります.
cc_binary(
    name = "libtensorflow.so",
    linkopts = select({
        "//tensorflow:darwin": [
            "-Wl,-exported_symbols_list",  # This line must be directly followed by the exported_symbols.lds file
            "//tensorflow/c:exported_symbols.lds",
        ],
        "//tensorflow:windows": [],
        "//tensorflow:windows_msvc": [],
        "//conditions:default": [
            "-z defs",
            "-s",
            "-Wl,--version-script",  #  This line must be directly followed by the version_script.lds file
            "//tensorflow/c:version_script.lds",
        ],
    }),
    linkshared = 1,
    deps = [
        "//tensorflow/contrib:contrib_kernels",
        "//tensorflow/contrib:contrib_ops_op_lib",
        "//tensorflow/c:c_api",
        "//tensorflow/c:exported_symbols.lds",
        "//tensorflow/c:version_script.lds",
        "//tensorflow/core:tensorflow",
    ],
)
contribの二行の依存は新しく入れたものです.そしてもう一度bazelでlibtenssorflowをコンパイルすればいいです.途中で困惑したのはなぜpythonがpipで装着すればcontribが使えますか?tools/pip_を観察します.packages/BUILDファイルがpipのカバンを発見したのは、すべてのcontribの依存を含んでいます.公式チームの非python言語に対する重視はまだ足りないと感じています.これを明確に説明していません.ある人がissueを持っていますが、誰も答えてくれませんでした.https://github.com/tensorflow/tensorflow/issues/14358を選択します.