1. 程式人生 > >Tensorflow利用其視覺化工具tensorboard視覺化將神經網路

Tensorflow利用其視覺化工具tensorboard視覺化將神經網路

參考莫煩的B站教程20,利用tensorflow自帶的視覺化工具tensorboard,在Google瀏覽器上進行了簡單神網路的視覺化。例子程式碼如下(spyder(tensorflow)編輯):

Created on Mon Sep 17 18:37:22 2018

@author: Administrator
"""

# -*- coding: utf-8 -*-
"""
Created on Thu Sep 13 19:36:15 2018
莫煩B站的教學視訊P16的例子。擬合一個二次函式。構建了一個隱藏層含有具有十個神經元的三層神經網路。激勵函式用的relu
本次主要是演示將神經網路架構在tensorboard上進行視覺化。
@author: Administrator
"""

import tensorflow as tf
#import matplotlib.pyplot as plt#首先載入視覺化模組


def add_layer(inputs,in_size,out_size,activation_function=None):#None的話,預設就是線性函式
    with tf.name_scope('layer'):
        with tf.name_scope('weights'):
            Weights=tf.Variable(tf.random_normal([in_size,out_size]),name='W')#生成In_size行和out_size列的矩陣。代表權重矩陣。
        with tf.name_scope('biases'):
            biases=tf.Variable(tf.zeros([1,out_size])+0.1,name='b')
        with tf.name_scope('Wx_plus_b'):
            Wx_plus_b=tf.matmul(inputs,Weights)+biases#預測出來的還沒有被啟用的值儲存在這個變數中。
        if activation_function is None:
            outputs=Wx_plus_b  
        else:
            outputs=activation_function(Wx_plus_b)
        return outputs#outputs是add_layer的輸出值。
#define placeholder for inputs to network.
with tf.name_scope('inputs'):#input 包含了x和Y的input
    xs=tf.placeholder(tf.float32,[None,1],name='x_input')#1是x_data的屬性為1.None指無論給多少個例子都ok。
    ys=tf.placeholder(tf.float32,[None,1],name='y_input')

#開始建造第一層layer。典型的三層神經網路:輸入層(有多少個輸入的x_data就有多少個神經元,本例中,只有一個屬性,所以只有一個神經元輸入),假設10個神經元的隱藏層,輸出層。
#由於在使用relu,該程式碼就是用十條線段擬合一個拋物線。
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)#L1僅是單隱藏層,全連線網路。

#再定義一個輸出層,即:prediction
#add_layer的輸出值是l1,把l1放在prediction的input。input的size就是隱藏層的size:10.output的size就是y_data的size就是1.
prediction=add_layer(l1,10,1,activation_function=None)
with tf.name_scope('loss'):
    loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),
                           reduction_indices=[1]))#reduction_indices=[1]:按行求和。reduction_indices=[0]按列求和。sum是將所有例子求和,再求平均(mean)。
with tf.name_scope('train'):
#通過訓練學習。提升誤差。
    train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)#以0.1的學習效率來訓練學習,來減小loss。
sess=tf.Session()
writer=tf.summary.FileWriter('logs',sess.graph)#把圖片load到log的資料夾裡,在瀏覽器裡瀏覽。
#important step
sess.run(tf.global_variables_initializer())

期間,需要注意的是:

@1、將程式碼run之後,建立的log檔案被放在了spyer的.py檔案的預設儲存位置。因此下一步在cmd上執行:

”tensorboard --logdir=logs“(win10平臺上需要這樣寫,而不是logdir='logs/')時,需要將cmd的工作路徑改到“log”檔案所在的上一級。

@2、根據給出的地址即at後面的地址,copy到Google瀏覽器ernter後,會進入到tensorboard的線上介面: