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を使うと、
いろいろな案を試みて、省略しました.最終的に問題が発見されたのは、TensorFlowがBUILD target:libtenssor flow.soにいた時、contribに関する内容を入力していませんでした.ルートBUILDファイルのlibtenssor flow.so部分を修正すると以下のようになります.
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を選択します.