python-tensorflow:tensorboard神经网络可视化

tensorboard对神经网络可视化

tensorflow中采优化学习采用backprogram算法进行权值weight和偏差biases调节。
backprogram算法核心思想:后向传播能够知道如何更改网络中的权重和偏差来改变代价函数值。

基于之前对y=x^2+0.5拟合代码修改完善,从而可以采用tensorboard对神经网络可视化,更好理解backprogram算法的过程。

修改代码如下:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

def add_layer(inputs, in_size, out_size, activation_function=None):

    with tf.name_scope('layer'):
        with tf.name_scope('weights'):
            weights = tf.Variable(tf.random.normal([in_size, out_size]),name='W')
        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.add(tf.matmul(inputs,weights), biases)
        if activation_function is None:
            return Wx_plus_b
        else:
            return activation_function(Wx_plus_b)
      

x_data = np.linspace(-1,1,300)[:,np.newaxis]
noise = np.random.normal(0, 0.1, x_data.shape)#引入高斯白噪声
y_data = np.square(x_data)+0.5+noise

with tf.name_scope('inputs'):
    x_input = tf.placeholder(tf.float32, [None, 1] , name='x_input')
    y_output = tf.placeholder(tf.float32, [None, 1] , name='y_input')

layer1_out = add_layer(x_input, 1, 10, tf.nn.relu)
prediction = add_layer(layer1_out, 10, 1)

with tf.name_scope('loss'):
    loss = tf.reduce_mean(tf.reduce_sum(tf.square(y_output-prediction), reduction_indices=[1]))
    tf.summary.scalar("loss",loss)
with tf.name_scope('train'):
    train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss)

init = tf.initialize_all_variables()
session = tf.Session()
m = tf.summary.merge_all()
writer = tf.summary.FileWriter('logs/',session.graph)
session.run(init)

fig = plt.figure()
fig1 = fig.add_subplot(1,1,1)
fig1.scatter(x_data, y_data)
plt.ion()
plt.show(block=False)

for i in range(1000):
    session.run(train_step,feed_dict={x_input:x_data, y_output:y_data})
    if i%50 == 0:
        try:
            fig1.lines.remove(lines[0])
        except Exception:
            pass
        prediction_value = session.run(prediction, feed_dict={x_input:x_data})
        lines = fig1.plot(x_data, prediction_value,'r-',lw=3)
        plt.pause(0.2)

print("finish")

  1. 执行代码在logs文件夹下生产相关本地文件,接着进入cmd窗口,将工作目录跳入python存放文件,执行tensorboard --logdir logs --host=127.0.0.1结果如下图:

python-tensorflow:tensorboard神经网络可视化_第1张图片

tensorboard详情展示

  1. 浏览器输入上图链接:http://127.0.0.1:6006
  2. 得到页面如图所示:
    tf.name_scope(“name”) 定义GRAPHS各部分名称
    python-tensorflow:tensorboard神经网络可视化_第2张图片
    每个模块部分细节展示:
    图一(train层,loss层)
    python-tensorflow:tensorboard神经网络可视化_第3张图片
    图二(layer层,input层)
    python-tensorflow:tensorboard神经网络可视化_第4张图片
  3. 损失函数变化情况:
    主要用此函数进行可视化: tf.summary.scalar(‘name’,name)python-tensorflow:tensorboard神经网络可视化_第5张图片
  4. 权值和偏差变化情况:
    用于对HISTOGRAMS内历史权值和偏差进行名称标记(博主比较懒就没写 )
    tf.summary.histogram(layer_name+‘name’,name)python-tensorflow:tensorboard神经网络可视化_第6张图片python-tensorflow:tensorboard神经网络可视化_第7张图片

你可能感兴趣的:(tensorflow,机器学习,神经网络,tensorboard详情,神经网络可视化,tensorflow)