2016-07-18 4 views
2

Tensorflowのスカラー/ヒストグラム/画像サマリー関数はテンソルボードで表示するためのデータを記録するのに非常に便利です。しかし、私はその情報をコンソールにも表示したいと思います(例えば、私がデスクトップ環境を持たない狂った人なら)。コンソールで要約を出力する

現在、を呼び出す前に、フェッチリストに関心のある情報を追加していますが、これはすでにマージされた要約をフェッチしているため、冗長なようです。マージされた要約を取得するとprotobufが返されるので、一般的なpython protobufライブラリを使用してそれを掻き集めることができると思いますが、これは簡単な方法が必要な一般的な使用例のようです。

ここでの主な動機はカプセル化です。モデルとトレーニングのスクリプトを別のファイルに保存しておこう。私のモデルは、ログに役立つ情報のためにtf.scalar_summaryへの一連の呼び出しを持っています。理想的には、モデルファイルを変更せずに、トレーニングスクリプトで何かを変更することで、この情報をコンソールに追加印刷するかどうかを指定することができます。現在、私は有用な情報をすべて訓練スクリプトに渡すので(私はそれらを取得することができます)、またはへの呼び出しでモデルファイルをペーストします。tf.Print

+0

tf.Printは何をしますか? https://www.tensorflow.org/versions/r0.9/api_docs/python/control_flow_ops.html#Print (そのセマンティクスに注意してください - データが呼び出されるためにデータが流れていなければなりません) – dga

+0

ええ、私はそれを使っていますが、デバッグのためだけです。 tf.Print()やtf.scalar_summary()などで、何を何回ログに記録するか指定する必要があるので、適切な解決策ではないと思います。 tf.Printは、定期的に印刷する場合(たとえば、10エポック毎の損失など)には面倒です。 – zergylord

+0

コンサルタント - 明確にしてくれてありがとうございました。目標を何点か拡大しようとしました。 (私はまだウィッシュリストにprint(every_n = ..)を持っています。いつか)私はあなたが望むことをする方法を考えることはできませんが、ここでは要約の一部の著者に指摘します。 – dga

答えて

2

全体的に、ファーストクラスのサポートはありませんTensorFlowのユースケースなので、マージされた要約をtf.Summary()プロトコルバッファーに解析してから、適切にデータをフィルター/印刷します。

素敵なパターンが出たら、それをTensorFlow自体にマージすることができます。私はこれをtf.train.SummaryWriter上のオプションの設定にすることを想像することができますが、面白い要約をコンソールで印刷するための別のクラスを用意することが最善の方法です。

要約して印刷する項目と、要約する項目のみ(または異なる冗長レベルのシステムを設定する)グラフ自体をエンコードする場合は、Collections引数をサマリー演算子コンストラクタに使用できます異なるサマリーを異なるグループに編成する。例えば。 lossサマリーはコレクション[GraphKeys.SUMMARIES, 'ALWAYS_PRINT']に置くことができますが、別のサマリーをコレクション[GraphKeys.SUMMARIES, 'PRINT_IF_VERBOSE']などに入れることができます。異なるタイプの印刷には異なるmerge_summaryオペレーションを設定し、コマンドラインフラグで実行するものを制御できます。

関連する問題