[解決済み] TensorFlowの新しいtf.contrib.summaryはどのように評価されるのでしょうか?
2022-04-28 06:58:21
質問
新しい
tf.contrib.summary
APIです。古いものでは、やることといえば
tf.summary.merge_all()
をopとして実行します。
しかし、今は、次のようなものがあります。
tf.contrib.summary.record_summaries_every_n_global_steps
というような使い方ができる。
import tensorflow.contrib.summary as tfsum
summary_writer = tfsum.create_file_writer(logdir, flush_millis=3000)
summaries = []
# First we create one summary which runs every n global steps
with summary_writer.as_default(), tfsum.record_summaries_every_n_global_steps(30):
summaries.append(tfsum.scalar("train/loss", loss))
# And then one that runs every single time?
with summary_writer.as_default(), tfsum.always_record_summaries():
summaries.append(tfsum.scalar("train/accuracy", accuracy))
# Then create an optimizer which uses a global step
step = tf.create_global_step()
train = tf.train.AdamOptimizer().minimize(loss, global_step=step)
そして、次にいくつかの質問をします。
-
を実行するだけなら
session.run(summaries)
ループの中で、精度の要約は毎回書き込まれると思いますが、損失の要約は書き込まれないと思います、なぜならグローバルステップが30で割り切れる場合のみ書き込まれるからです? -
サマリーが自動的に依存関係を評価すると仮定すると、私は決して
session.run([accuracy, summaries])
を実行すればよいのです。session.run(summaries)
グラフに依存関係があるのですから、そうですよね? - もし2)が本当なら、トレーニングステップにコントロールの依存関係を追加して、トレーニング実行ごとにサマリーが書き込まれるようにすることはできないのでしょうか?それとも、これは悪い習慣なのでしょうか?
- どうせ同時に評価されるようなものに対して、一般的に制御依存性を使用することに何か不都合はあるのでしょうか?
-
なぜ
tf.contrib.summary.scalar
(など)を取り込みます。step
パラメータ?
3)のコントロールの依存関係を追加するというのは、こうすることを意味します。
tf.control_dependencies(summaries):
train = tf.train.AdamOptimizer().minimize(loss, global_step=step)
解決方法は?
回答は、リクエストに応じて編集から自己回答へ移動しました。
ちょっと遊んでみたんですが、どうやら
tf.control_dependencies
と
tf.record_summaries_every_n_global_steps
は期待通りの動作をし、サマリーはn番目のステップごとに記録されるだけです。しかし、もしこれらがセッション内で一緒に実行された場合、例えば
session.run([train, summs])
の場合、サマリーはたまに保存されますが、正確にn番目のステップ毎ではありません。n=2でテストしたところ、2番目のアプローチではサマリーが奇数ステップで書き込まれることが多かったのですが、制御依存のアプローチでは常に偶数ステップに書き込まれるようになりました。
関連
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] リストの要素数を取得する方法
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?
-
[解決済み] 文字列が空かどうかを確認する方法は?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
python call matlab メソッドの詳細
-
python string splicing.join()とsplitting.split()の説明
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない