tensorboard可视化_12. Tensorboard可视化神经网络
日期: 2020-12-10 分类: 个人收藏 421次阅读
神经网络结构如下:


此处是有一个输入层(inputs),一个隐含层(layer),还有一个输出层(output),现在来进行可视化:
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'):
# 定义权重,大小写都可以,习惯小写为单个值,大写则为数组。在每一次training中weight和bias都不一样
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
with tf.name_scope('biases'):
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1) # 因为bias不能为0
with tf.name_scope('Wx_plus_b'):
Wx_plus_b = tf.matmul(inputs, Weights) + biases # prediction value
# 这里因为我们使用的是默认的RELU,所以不写也是没关系的,到时候会自动生成
if activation_function is None:
outputs = Wx_plus_b
# 定义数据形式
else:
outputs = activation_function(Wx_plus_b)
return outputs
# 定义数据形式
x_data = np.linspace(-1, 1, 300)[:,np.newaxis] # 从-1到1生成300个元素,300行,1列。
noise = np.random.normal(0, 0.05, x_data.shape)
y_data = np.square(x_data) - 0.5 # 非线性
# 第一层layer。典型网络:输入层 —— 隐藏层 —— 输出层
# 隐藏层可以自己设定。输入层是根据输入的数据来的。
# y_data, x_data只有一个属性,因此输入/出层只有一神经网络。隐藏层我们设置10个神经元
with tf.name_scope('inputs'):
xs = tf.placeholder(tf.float32, [None, 1], name='x_input') # None就是意味着无论你给多少个sample都ok
ys = tf.placeholder(tf.float32, [None, 1], name='y_input')
I1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu) # 输入层
prediction = add_layer(I1, 10, 1, activation_function=None) # 输出层
with tf.name_scope('loss'):
# 计算预测值prediction和真实值的误差,对二者差的平方求和再取平均。
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
reduction_indices=[1]))
with tf.name_scope('train'):
# 如何让机器学习提升它的准确率。tf.train.GradientDescentOptimizer()中的值通常都小于1,这里取的是0.1,代表以0.1的效率来最小化误差loss。
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
sess = tf.Session()
# writer一定要在定义好session后定义
# 把整个框架loading到一个文件,然后在浏览器上查看
# 新版本换了,不是这么写的:writer = tf.train.SummaryWriter("/home",sess.graph)
writer = tf.summary.FileWriter("XIANGvisualization/",sess.graph)
# init = tf.initialize_all_variables() # tf 马上就要废弃这种写法
init = tf.global_variables_initializer() # 替换成这样就好
# 定义Session,并用 Session 来执行 init 初始化步骤。 (注意:在tensorflow中,只有session.run()才会执行我们定义的运算。)
sess.run(init)
可能存在的问题与解决办法:
最常出现问题:“No graph definition files were found”
原因:
a. 加载路径是否正确
b. 保存文件是否有效
---------------------------------------------------------
检查文件与路径:
."当前路径">tensorboard --logdir=yourPath
如果从正确的路径加载,请确保存在事件文件。TensorBoard将递归地遍历其logdir,如果数据嵌套在子目录下就可以了。确保以下显示至少一个结果:
find DIRECTORY_PATH | grep tfevents
您还可以通过在检查模式下运行tensorboard来检查事件文件的内容来检查事件文件是否确实有数据。
tensorboard --inspect --logdir DIRECTORY_PATH
(我的问题为中文问题,将路径改为全英问即可解决错误。因为楼主路径中有“桌面”二字。有anaconda的同学不能直接存/home,越级会被拒绝,直接存/home/anaconda即可)


除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐