Young87

当前位置:首页 >个人收藏

tensorboard可视化_12. Tensorboard可视化神经网络

神经网络结构如下:

a95796946185fb236d15f8d68393670f.png

93f04add34087dc65aab51c4c8406115.png

此处是有一个输入层(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即可)

0e34637a03bf2ad715f68b45c538a522.png

feb31f092a4d272ebb7499f1532425c2.png

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

上一篇: python自动拼图_Python图像处理——人物拼图游戏

下一篇: 21张让你代码能力突飞猛进的速查表(神经网络、线性代数、可视化等)

精华推荐