tensorflow运行的基本框架
构建图+执行图
import tensorflow as tf
# tensor构建图
a = tf.constant(1) # 一个tensor
b = tf.constant(2) # 另一个tensor
c = tf.add(a,b) # 一个op操作
# 执行图,开启一个session并打印新形成的tensor(c)的结果
sess = tf.Session()
print(sess.run(c))
sess.close()
# out:3
op:tensorflow中的各种基本操作(+ - * /)
fetch:将执行图的结果保存到变量中
数值类型转换:
import tensorflow as tf
a_float = tf.cast(a, dtype=tf.float32)
随机化方式:
# 标准正态分布
random_normal = tf.random_normal((), mean=0.0, stddv=1.0, dtype=tf.float32, seed=None)
# truncated正态随机
truncated_normal = tf.truncated_normal((), mean=0.0, stddv=1.0, dtype=tf.float32, seed=None)
# 均匀分布
rand_uniform = tf.random_uniform((), minval=0.0, maxval=1.0, dtype=tf.float32, seed=None)
Variable
初始化:
# 初始化所有变量
init = tf.global_variables_initializer()
sess.run(init)
# 初始化某些变量
init_ab = tf.variables_initializer([var_a,var_b])
init_ab.run()
# 初始化某个变量
var_w.initializer.run()
赋值:
# 前提:W初始化为10
W.assign(100)
W.initializer.run()
print(W.eval(sess))
# out:10
assign_op = W.assign(100)
W.initializer.run()
assign_op.eval() # 赋值后需要执行
print(W.eval())
# out:100
名称域
with tf.name_scope('name_scope'):
var_a = tf.Variable(0, dtype=tf.int32)
var_b = tf.Variable([1,2], dtype=tf.float32)
with tf.variable_scope('var_scope'):
var_c = tf.Variable(0, dtype=tf.int32)
var_d = tf.Variable([1,2], dtype=tf.float32)
# 打印输出
print(var_a.name)
print(var_b.name)
print(var_c.name)
print(var_d.name)
# out:
# name_scope/Variable:0
# name_scope/Variable_1:0
# var_scope/Variable:0
# var_scope/Variable_1:0
占位符:Placeholder
# 占位符
a = tf.plaveholder(tf.float32, shape=[3])
b = tf.placeholder(tf.bool,shape=[1,2])
# 打印
print(sess.run(a,feed_dict={a:[1,2,3]}))
print(sess.run([a,b],feed_dict={a:[1,2,3], b:[True,False]}))
#out:
#[1.2.3.]
#[array([1.2.3.],dtype=float32), array([[True, False]])]
Graph
# 获得前面定义的所有tensor
g = tf.get_default_graph
for op in g.get_operations():
print(op.name)
# 得到特定tensor的值
what_is_this = g.get_tensor_by_name('Hello:0') # 前提是存在名为Hello的tensor
print(what_id_this.eval())
可视化:
- 将图写入硬盘
with tf.Session() as sess:
graph_writer = tf.summary.FileWriter('.', sess.graph)
完成后,当前目录出现events.*文件
- 在当前目录打开终端,键入命令
$ tensorboard --logdir=.
在命令行得到输出:
$ Tensorboard 0.1.8 at http://USERNAME:6006(Press CTRL+C to quit)
- 打开浏览器(最好用chrome,有些浏览器不适用),输入at后的链接http://USERNAME:6006,得到可视化后的图。