Tensorboard 可视化代码及运行方式

# -*- coding: utf-8 -*-

"""
可以运行的,且最好的例子
"""
# Tensorboard 可视化好帮手
#执行过程 运行本文件,再cmd -> activate  tensorflow -> tensorboard --logdir=E://tensorflow-example//problem//logs
# 必须是google -> http://AOC:6006
#主要方法:tf.summary.histogram(layer_name + '/outputs', outputs) 、 tf.summary.scalar('loss',loss)
#理解过程主要看下边ACT1~ACT6


#以下是代码和注释


#import packages
import tensorflow as tf
import numpy as np


 #######加上这句话,解决了下边注释的问题!!!!!!!
tf.reset_default_graph() 
#InvalidArgumentError: You must feed a value for placeholder tensor 'input_2/x_input' with dtype float and shape [?,1]


#添加神经网络隐藏层函数
def add_layer(inputs, in_size, out_size,n_layer,  activation_function=None):
    #默认是线性函数linear function
    layer_name = 'layer%s' % n_layer 
    with tf.name_scope(layer_name):
        with tf.name_scope('weight'): #ACT 1
            Weight = tf.Variable(tf.random_normal([in_size, out_size]), name='w')#初始化随机矩阵
            tf.summary.histogram(layer_name + '/weight', Weight) # ACT2
        with tf.name_scope('biases'):
            biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b') #初始化随机偏差向量
            tf.summary.histogram(layer_name + '/biases', biases)
        with tf.name_scope('wx_plus_b'):
            Wx_plus_b = tf.add(tf.matmul(inputs, Weight), biases) #矩阵乘法
        
        if activation_function is None:
            outputs = Wx_plus_b
        else:
            outputs = activation_function(Wx_plus_b)
        tf.summary.histogram(layer_name + '/outputs', outputs)
        return outputs
    
# fake data 
x_data = np.linspace(-1, 1, 300)[:, np.newaxis] #300行1列
noise = np.random.normal(0, 0.05) #均值0,方差0.05
y_data = np.square(x_data) - 0.5 + noise


#定义了一个大框架
with tf.name_scope('input'):
    #define placeholder for inputs to networks
    xs = tf.placeholder(tf.float32, [None, 1], name='x_input') #None代表输入数据数目可以任意
    ys = tf.placeholder(tf.float32, [None, 1], name='y_input')
    
#定义了一个隐藏层
l1 = add_layer(xs, 1, 10, n_layer=1, activation_function=tf.nn.relu) #小于0等于0,大于0线性的
prediction = add_layer(l1, 10, 1, n_layer=2, activation_function=None)#linear function


#定义损失函数:无法平方求和再均值
with tf.name_scope('loss'):
    loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), 
                                    reduction_indices=[1]), name='loss_value')
    tf.summary.scalar('loss', loss) #在event里可看见!!
with tf.name_scope('train'):
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#学习率一般小于1
sess = tf.Session()
merged =  tf.summary.merge_all() # ACT3
writer = tf.summary.FileWriter('logs/', sess.graph)  # ACT4
init = tf.global_variables_initializer()
sess.run(init)




for i in range(1000):
    sess.run(train_step, feed_dict={xs:x_data, ys:y_data})
    if i % 50 == 0:
        result = sess.run(merged, feed_dict={xs:x_data, ys:y_data}) # ACT6
        writer.add_summary(result, i) # ACT7


writer.close()  

你可能感兴趣的:(tensorflow)