2016-06-12 4 views
2

テンソルボードがグラフをどのように視覚化するのかを理解しようとしています。私はこの目的のために単純な線形回帰を使用しています。ここに私のコードは次のとおりです。ここでテンソルフローのテンソルボードグラフをどのように解釈するのですか?

# LINEAR REGRESSION IN TENSORFLOW 

# generate points 
import numpy as np 
import os 
import time 
import tensorflow as tf 

num_points = 1000 
vectors_set = [] 
for i in xrange(num_points): 
    x1 = np.random.normal(0.0, 0.55) 
    y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0, 0.03) 
    vectors_set.append([x1, y1]) 

with tf.name_scope('data') as scope: 
    x_data = [v[0] for v in vectors_set] 
    y_data = [v[1] for v in vectors_set] 

# Cost function and gradient descent algorithm 
with tf.name_scope('model') as scope: 
    W = tf.Variable(tf.random_uniform([1], -1, 1), name = "W") 
    b = tf.Variable(tf.zeros([1]), name = "b") 
    z = tf.add(W * x_data, b, name = "z") 

with tf.name_scope('loss') as scope: 
    loss = tf.reduce_mean(tf.square(z - y_data)) 

optimizer = tf.train.GradientDescentOptimizer(0.5) 
train = optimizer.minimize(loss) 

# Running the algorithm 
init = tf.initialize_all_variables() 

sess = tf.Session() 
sess.run(init) 

timestamp = str(int(time.time())) 
print timestamp 
train_summary_writer = tf.train.SummaryWriter(
     os.path.join(
      "./", "summaries", timestamp), sess.graph) 
train_summary_writer.add_graph(sess.graph) 

はtensorboard視覚化したものです: enter image description here

私の質問は以下のとおりです。

  1. 私は私のグラフにグラデーションを定義していませんでした。それはデフォルトでテンソルボードが付いていますか?
  2. なぜ8つのテンソルが損失から勾配に向かうのですか?なぜモデルからグラデーションまで5テンソルですか?
  3. 私は変数yを定義しませんでした。テンソルボードは自動的にyを定数に代入しますか?どうすれば変更できますか?
  4. 私のグラフでは、操作の間に矢印が表示されません。

ありがとうございました!あなたはtf.train.GradientDescentOptimizer

  • あなたのコードはGradientDescentOptimizerは、それが損失に依存していることを意味し、損失を最小限に抑える必要があることを指定したときに作成した

  • 答えて

    4
    1. 勾配が自動的にグラフに追加されました。また、損失を最小限に抑えるために、モデルの重みを更新する必要があります。

    2. 私はそれについては分かりません。グラフ定義をアップロードできますか? (セッションからグラフのdefを得ることができます)

    3. テンソルの形を追加したときに矢印を無効にしましたが、多くの人がそれらを要求していますので、戻します。

    今のところ、モデルにデータをインライン展開していますが、これは良いパターンではありません。ブロックでは:あなただけのPythonのリストを宣言し、そこに任意のtensorflowオプスを作成していないので、

    with tf.name_scope('data') as scope: 
        x_data = [v[0] for v in vectors_set] 
        y_data = [v[1] for v in vectors_set] 
    

    name_scopeは、何もしていません。代わりに、プレースホルダの使用を検討する必要があります。

    +0

    ありがとうございます。 Q2のテンソルの数はどうですか?なぜ5と8があるのですか? – sergulaydore

    +0

    @dandelion:テンソルの形を追加したときに矢印を無効にしましたが、多くの人がそれらを求めていますので、これを戻します。テンソルフローテンソルボードピペットパッケージをチェックしましたが、その機能はありませんでした。 –

    +0

    @ダンデリオン:私はそれを得た。申し訳ありませんが、私は誤って古いバージョンのテンソルフローを使用していました –

    関連する問題