2017-07-13 14 views
8

新しいtf.estimator APIを使用するモデルにいくつかのTensorBoardロギングを追加しようとしています。 - 私はこのコードを実行すると、私は次の取得、しかしTensorflow - 1.2 Estimator APIでtf.summaryを使用

​​

model_fn

summary_hook = tf.train.SummarySaverHook(
    save_secs=2, 
    output_dir=MODEL_DIR, 
    summary_op=tf.summary.merge_all()) 

# ... 

classifier.train(
    input_fn, 
    steps=1000, 
    hooks=[summary_hook]) 

、私もsummaryを作成しています:

私はそうのように設定フックを持っていますsummary_hookからのエラー: Exactly one of scaffold or summary_op must be provided.tf.summary.merge_all()は、にもかかわらず、要約を検出せずにNoneを返している可能性があります210私はmodel_fnで宣言しました。

これはなぜ機能しないのでしょうか?

答えて

3

使用tf.train.Scaffold()とただ、将来的にこの質問を持っている誰のために

summary_hook = tf.train.SummarySaverHook(
    save_secs=2, 
    output_dir=MODEL_DIR, 
    scaffold=tf.train.Scaffold(summary_op=tf.summary.merge_all())) 
+1

の、TensorBoardロギングのための全体的な概要ライターの周波数に影響を与えますが、私は次のエラーを取得する:「例外TypeError:フェッチの引数型が無効です。は、文字列またはTensorでなければなりません。 – EXP0

+0

Tensorflowの新しいバージョンでは、 'evaluate'にフックを渡しても、' train'ではフックを渡しても動作しません。列車の場合は、 'mode_fn'でサマリーを定義するだけで、テンソルボードに自動的に記録されます。(はい、私はこれがダムで直観的ではないと感じています) – GPhilo

2

を以下のようtf.merge_allを渡し、選択したソリューションは、(選択された溶液中で、私のコメントを参照してください)私のために動作しません。

実際、TF 1.2 Estimator APIでは、summary_hookを持つ必要はありません。私はをmodel_fnに持っていて、summary_hookなしでコードを実行します。損失は​​記録され、テンソルボードに示されます。 TF APIがこのような質問の後に変更されたかどうかはわかりません。

は、あなたの推定であなたの概要OPSを追加版-R1.3 Tensorflowと

+1

Estimator APIはトレーニング中に要約を自動的に処理します。 – 4dan

+0

'model_fn'で要約を書いている限り動作しますが、' input_fn'で何かを要約したいのですが(例えば、データの拡張をチェックするしかし、画像を記録することによって) – GPhilo

0

model_fn

例:

tf.summary.histogram(tensorOp.name, tensorOp) 

あなたが時間と空間を消費することが要約を書く感じる場合は、あなたがコントロールすることができますあなたの見積もりの​​書き込み頻度は、run_config

run_config = tf.contrib.learn.RunConfig() 
run_config = run_config.replace(model_dir=FLAGS.model_dir) 
run_config = run_config.replace(save_summary_steps=150) 

注:これは私がほぼ同じコードの構造を持っているあなたの推定量(tf.estimator.Estimator

+0

これは評価のためには機能しません。 – GPhilo

関連する問題