TensorFlow > with tf.name_scope('summaries'): > Scopeの分割


TensorFlowというDeep Learning関連コードを学習中。
https://www.tensorflow.org/versions/master/tutorials/mnist/tf/index.html#tensorflow-mechanics-101

mnist_with_summary.pyについて

  def variable_summaries(var, name):
    """Attach a lot of summaries to a Tensor."""
    with tf.name_scope('summaries'):
      mean = tf.reduce_mean(var)
      tf.scalar_summary('mean/' + name, mean)
      with tf.name_scope('stddev'):
        stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
      tf.scalar_summary('stddev/' + name, stddev)
      tf.scalar_summary('max/' + name, tf.reduce_max(var))
      tf.scalar_summary('min/' + name, tf.reduce_min(var))
      tf.histogram_summary(name, var)

with tf.name_scope('summaries'):という構文を未消化だった。

このままではデータ量が多くやや複雑なので、with tf.name_scope('hoge') as scope:を使ってScopeを分割してみます。

リンク先の例がわかりやすい。

mnist_with_summary.pyのコードで上記のようにScope分割しているが、分割したもの(summariesのScopeなど)を他で使っている感じがしない。このあたりは未消化。

試しに変更

  def variable_summaries(var, name):
    """Attach a lot of summaries to a Tensor."""
    with tf.name_scope('summaries'):
      mean = tf.reduce_mean(var)
      tf.scalar_summary('mean/' + name, mean)
      with tf.name_scope('stddev'):
        stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
      tf.scalar_summary('stddev/' + name, stddev)
      tf.scalar_summary('max/' + name, tf.reduce_max(var))
      tf.scalar_summary('min/' + name, tf.reduce_min(var))
      tf.histogram_summary(name, var)

  def variable_summaries(var, name):
    """Attach a lot of summaries to a Tensor."""
#    with tf.name_scope('summaries'):
    mean = tf.reduce_mean(var)
    tf.scalar_summary('mean/' + name, mean)
    with tf.name_scope('stddev'):
      stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
    tf.scalar_summary('stddev/' + name, stddev)
    tf.scalar_summary('max/' + name, tf.reduce_max(var))
    tf.scalar_summary('min/' + name, tf.reduce_min(var))
    tf.histogram_summary(name, var)

としてみたが、TensorBoard上の表示は変化ないように見える。

コードにおいてScopeを識別して使う時があるのだろうか。

http://www.mwsoft.jp/programming/tensor/tutorial_tensorboad.html
を見るとTensorBoardのGraph表示で違いが出てくるようだ。

あらためてTensorBoardのGraphを見ても'summaries'や'stddev'の表記は見つかっていない。
他の例をこなすうちにわかるだろう。

見つけた

layer1の下にweightsがあり、weightsの下にsummariesがある。summariesの中にstddevがある。

TensorBoardのGraphを見やすくできるようだ。