Tensorflow命名空间与计算图可视化
Posted cloud-ken
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow命名空间与计算图可视化相关的知识,希望对你有一定的参考价值。
Tensorflow命名空间与计算图可视化
觉得有用的话,欢迎一起讨论相互学习~Follow Me
参考文献
参考文献Tensorflow实战Google深度学习框架
实验平台:
Tensorflow1.4.0
python3.5.0
- Tensorflow可视化得到的图并不仅是将Tensorflow计算图中的节点和边直接可视化,它会根据每个Tensorflow计算节点的命名空间来整理可视化得到效果图,使得神经网络的整体结构不会被过多的细节所淹没。除了显示Tensorflow计算图的结构,Tensorflow还可以展示Tensorflow计算节点上的信息进行描述统计,包括频数统计和分布统计。
- 为了更好的组织可视化效果图中的计算节点,Tensorboard支持通过Tensorflow命名空间来整理可视化效果图上的节点。在Tensorboard的默认视图中,Tensorflow计算图中同一个命名空间下的所有节点会被缩略为一个节点,而顶层命名空间的节点才会被显示在Tensorboard可视化效果图中。
tf.variable_scope和tf.name_scope函数区别
- tf.variable_scope和tf.name_scope函数都提供了命名变量管理的功能,这两个函数在大部分情况下是等价的,唯一的区别在于使用tf.get_variable函数时:
import tensorflow as tf
# 不同的命名空间
with tf.variable_scope("foo"):
# 在命名空间foo下获取变量"bar",于是得到的变量名称为"foo/bar"
a = tf.get_variable("bar", [1])
print(a.name)
# foo/bar:0
with tf.variable_scope("bar"):
# 在命名空间bar下获取变量"bar",于是得到的变量名称为"bar/bar".此时变量在"bar/bar"和变量"foo/bar"并不冲突,于是可以正常运行
b = tf.get_variable("bar", [1])
print(b.name)
# bar/bar:0
# tf.Variable和tf.get_variable的区别。
with tf.name_scope("a"):
# 使用tf.Variable函数生成变量时会受到tf.name_scope影响,于是这个变量的名称为"a/Variable"
a = tf.Variable([1])
print(a.name)
# a/Variable: 0
# tf.get_variable函数不受头tf.name_scope函数的影响,于是变量并不在a这个命名空间中
a = tf.get_variable("b", [1])
print(a.name)
# b:0
# with tf.name_scope("b"):
# 因为tf.get_variable不受tf.name_scope影响,所以这里将试图获取名称为"a"的变量。然而这个变量已经被声明了,于是这里会报重复声明的错误。
# tf.get_variable("b",[1])
- 通过对变量命名空间进行管理,使用Tensorboard查看模型的结构时更加清晰
import tensorflow as tf
with tf.name_scope("input1"):
input1 = tf.constant([1.0, 2.0, 3.0], name="input2")
with tf.name_scope("input2"):
input2 = tf.Variable(tf.random_uniform([3]), name="input2")
output = tf.add_n([input1, input2], name="add")
writer = tf.summary.FileWriter("log/simple_example.log", tf.get_default_graph())
writer.close()
- 这样程序中定义的加法运算都被清晰的展示出来,并且变量初始化等基本操作都被折叠起来。
- 点击input2上的加号按钮,能够看到关于input2变量初始化的全过程。
以上是关于Tensorflow命名空间与计算图可视化的主要内容,如果未能解决你的问题,请参考以下文章