一、tensorboard的简介
- tensorboard简介
- tensorboard使用流程
二、tensorflow可视化分类
-
计算图的可视化:add_graph()
-
监控指标的可视化:add_summary()
Ⅰ、 SCALAR
Ⅱ、 IMAGE
Ⅲ、 HISTOGRAM
Ⅳ、 MERGE_ALL
3、 多个时间的可视化:add_event()
三、通过命名空间美化计算图
四、将所有日志写入到文件:tf.summary.FileWriter()
五、启动tensorboard展示所有日志图表
1.通过windows下的cmd启动
2.通过Ubuntu下的bash启动
六、使用TF实现一元线性回归(并使用TensorBoard可视化)
Tensorboard的使用
简单例子
import tensorflow as tf
a=tf.constant([1.0,2.0,3.0],name='input1')
b=tf.Variable(tf.random_uniform([3]),name='input2')
add=tf.add_n([a,b],name='addOP')
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
writer=tf.summary.FileWriter("mnist_logs",sess.graph)
print(sess.run(add))
writer.close()
七、Tensorflow手册
简述
使用图表示计算任务、再会话的上下文当中执行图、通过tensor表示数据、通过变量维护状态、使用feed和fetch可以为任意的操作赋值或者从其中获取数据
TensorFlow 是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op获得 0 个或多个 Tensor , 执行计算, 产生 0 个或多个 Tensor . 每个 Tensor 是一个类型化的多维数组. 例如, 你可以将一小组图像集表示为一个四维浮点数数组, 这四个维度分别是 [batch, height, width, channels] .一个 TensorFlow 图描述了计算的过程. 为了进行计算, 图必须在 会话 里被启动. 会话 将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的 tensor 返回. 在 Python 语言中, 返回的 tensor 是 numpy ndarray 对象; 在 C 和 C++ 语言中, 返回的 tensor 是 tensorflow::Tensor 实例.
计算图
构建图的第一步,是创建源op.源op不需要任何输入,例如常量.源op的输出被传递给其他op做运算.
Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入.
构造阶段→启动图
(请阅读Graph类和Session类!!!!!!!!!)
启动图
构造阶段完成后, 才能启动图. 启动图的第一步是创建一个 Session 对象, 如果无任何创建参数, 会话构造器将启动默认图.
交互式使用
为了便于使用诸如IPython之类的交互环境,可以使用InteractiveSession代替session类,使用Tensor.eval()和Operation.run()方法代替Session.run().这样可以避免使用一个变量来持有会话
Tensor
你可以吧tensor看作是一个n维的数组或列表,一个tensor包含一个静态类型rank和一个shape.想了解TensorFlow是怎么处理这些概念的参见,Rank,Shape,Type
变量
变量维护图执行过程中的状态信息.下面的例子演示了如何使用变量实现一个简单的计数器
state = tf.Variable(0, name="counter")
one = tf.constant(1)
newvalue = tf.add(state, one)
update = tf.assign(state, new_value)
initop = tf.initializeallvariables()
with tf.Session() as sess:
sess.run(init_op)
print sess.run(state)
for _ in range(3):
sess.run(update)
print (sess.run(state))
这个程序可以修改来适应不同计算需求
代码中 assign() 操作是图所描绘的表达式的一部分, 正如 add() 操作一样. 所以在调用 run() 执行表达式之前, 它并不会真正执行赋值操作.
Fetch
input1=tf.constant(3.0)
input2=tf.constant(2.0)
input3=tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)
with tf.Session() as sess:
result=sess.run([mul,intermed])
print(result)
使用tensorflow命令时应当相当注意,使用虚拟机的目的就在于防止tensorflow突然崩溃死机,我们在前面的调试当中发现tensorflow对代码的要求相当高,一旦哪里出了问题,很容易就停不下来进而蓝屏,这是一个有待解决的问题
Feed
LT4.py
import tensorflow as tf
input1=tf.placeholder(tf.float32)
input2=tf.placeholder(tf.float32)
output=tf.multiply(input1,input2)
with tf.Session() as sess:
print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))
feed在使用一个tensor值临时替换一个操作的输出结果.你可以提供feed数据作为run()地用的参数.feed旨在调用它的方法内有效,方法结束.feed就会消失.最常见的用力是将某些特殊的操作指定为“feed”操作,标记的方法是使用tf.placeholder()为这些操作创建占位符
for a larger-scale example of feeds.如果没有正确提供feed,placeholder()操作将会产生错误,MNIST全联通feed教程给出了更大规模使用feed的例子
网友评论