ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Tensorboard
    공부/Tensorflow 2019. 1. 26. 16:14

    Tensorboard

    시각화툴

    프로그램을 최적화하고 디버깅하는 기능을 제공함.

    텐서보드에서 도식화한 그래프의 각 부분에 대한 상세 정보와 매개변수들에 대한 통계 데이터들을 볼 수 있다.

    텐서보드에 나타나는 데이터는 summary operation으로 취득할 수 있는 데이터로서 텐서플로가 실행되는 동안 생성되며, 추적파일에 저장됨.

    텐서플로 API 중 요약명령 항목(https://goo.gl/cH6gW2)참고


    텐서보드 실행

    커맨드라인에서 추적 정보가 담긴 파일의 디렉터리를 인수로 지정하여 실행


    (cuda) tensorboard --logdir=추적파일 디렉토리


    이후 브라우저에서

    http://localhost:6006 으로 접속


    자세한 설명은 https://goo.gl/6Cyr20 참고


    쓰는 법

    1. logging할 tensor정하기

    2. Merge all summaries

    3. Create writer and add graph

    4. Run summary merge and add_summary

    5. Launch Tensorboard


    # Lab 9 XOR

    import tensorflow as tf

    import numpy as np


    tf.set_random_seed(777)  # for reproducibility

    learning_rate = 0.01


    x_data = [[0, 0],

              [0, 1],

              [1, 0],

              [1, 1]]

    y_data = [[0],

              [1],

              [1],

              [0]]

    x_data = np.array(x_data, dtype=np.float32)

    y_data = np.array(y_data, dtype=np.float32)


    X = tf.placeholder(tf.float32, [None, 2], name='x-input')

    Y = tf.placeholder(tf.float32, [None, 1], name='y-input')


    with tf.name_scope("layer1"):

        W1 = tf.Variable(tf.random_normal([2, 2]), name='weight1')

        b1 = tf.Variable(tf.random_normal([2]), name='bias1')

        layer1 = tf.sigmoid(tf.matmul(X, W1) + b1)


        w1_hist = tf.summary.histogram("weights1", W1)

        b1_hist = tf.summary.histogram("biases1", b1)

        layer1_hist = tf.summary.histogram("layer1", layer1)

    // 1. logging할 tensor정하기



    with tf.name_scope("layer2"):

        W2 = tf.Variable(tf.random_normal([2, 1]), name='weight2')

        b2 = tf.Variable(tf.random_normal([1]), name='bias2')

        hypothesis = tf.sigmoid(tf.matmul(layer1, W2) + b2)


        w2_hist = tf.summary.histogram("weights2", W2)

        b2_hist = tf.summary.histogram("biases2", b2)

        hypothesis_hist = tf.summary.histogram("hypothesis", hypothesis)


    # cost/loss function

    with tf.name_scope("cost"):

        cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) *

                               tf.log(1 - hypothesis))

        cost_summ = tf.summary.scalar("cost", cost)


    with tf.name_scope("train"):

        train = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)


    # Accuracy computation

    # True if hypothesis>0.5 else False

    predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)

    accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))

    accuracy_summ = tf.summary.scalar("accuracy", accuracy)


    # Launch graph

    with tf.Session() as sess:

        # tensorboard --logdir=./logs/xor_logs

        merged_summary = tf.summary.merge_all()

        writer = tf.summary.FileWriter("./logs/xor_logs_r0_01")

        writer.add_graph(sess.graph)  # Show the graph


        # Initialize TensorFlow variables

        sess.run(tf.global_variables_initializer())


        for step in range(10001):

            summary, _ = sess.run([merged_summary, train], feed_dict={X: x_data, Y: y_data})

            writer.add_summary(summary, global_step=step)

            // file에 기록하는 부분


            if step % 100 == 0:

                print(step, sess.run(cost, feed_dict={

                      X: x_data, Y: y_data}), sess.run([W1, W2]))


        # Accuracy report

        h, c, a = sess.run([hypothesis, predicted, accuracy],

                           feed_dict={X: x_data, Y: y_data})

        print("\nHypothesis: ", h, "\nCorrect: ", c, "\nAccuracy: ", a)



    '''

    Hypothesis:  [[  6.13103184e-05]

     [  9.99936938e-01]

     [  9.99950767e-01]

     [  5.97514772e-05]]

    Correct:  [[ 0.]

     [ 1.]

     [ 1.]

     [ 0.]]

    Accuracy:  1.0

    '''






    마우스를 그래프에 가져다 댔을때 그 부분의 정보를 알수있음

    (클릭X, 호버링)


    댓글

© 2020 Aeri Jeong.