阅读 google实战 入门tensorflow 1:
tensorflow入门
TensorFlow 是一个通过计算图的形式来表述计算的编程系统。
计算图的第一阶段定义计算,第二阶段执行计算
定义计算:
import tensorflow as tf
a = tf.constant([1.0,2.0],name='a')
b = tf.constant([2.0,3.0],name='b')
result = a+b
此时如果执行print(result),得到结果为:
Tensor(“add_1:0”, shape=(2,), dtype=float32)
计算结果不是一个具体数字,而是一个张量结构,包含张量的名字。维度和属性。张量的名字形式为:node:src_output ,node为节点的名称,src_output表示当前张量来自节点的第几个输出。
TensorFlow支持14种数据类型:实数(tf.float32、tf.float64)整数(tf.int8、tf.int16、tf.int32、tf.int64、tf.uint8)布尔型(tf.bool)复数(tf.complex64、tf.complex128)
执行计算:会话
sess = tf.Session()
print( sess.run(result))
sess.close()
结果为:[ 3. 5.]
sess = tf.Session() 创建会话
sess.run(result) 得到关心的运算的结果
sess.close() 关闭会话 释放资源
使用以下方法创建会话不需要关闭会话:
with tf.Session() as sess:
sess.run(result)
通过设定默认会话计算张量的取值:
sess = tf.Session()
with sess.as_default():
print(result.eval())
对于计算图:
tf.get_default_graph()可以获得默认计算图
result.graph可以得到result的计算图
tf.Graph用来生成新的计算图
各计算图之间张量和运算都不会共享。
import tensorflow as tf
g1 = tf.Graph()
with g1.as_default():
v = tf.get_variable('v', shape=[1],initializer=tf.zeros_initializer())
g2 = tf.Graph()
with g2.as_default():
v = tf.get_variable('v',shape=[1], initializer=tf.ones_initializer())
with tf.Session(graph=g1) as sess:
tf.initialize_all_variables().run()
with tf.variable_scope("",reuse=True):
print(sess.run(tf.get_variable('v')))
with tf.Session(graph=g2) as sess:
tf.initialize_all_variables().run()
with tf.variable_scope("",reuse=True):
print(sess.run(tf.get_variable('v')))
运行结果为:
[ 0.]
[ 1.]
tf.get_variable(name, shape, initializer): name就是变量的名称,shape是变量的维度,initializer是变量初始化的方式,初始化的方式有以下几种:
tf.constant_initializer:常量初始化函数
tf.random_normal_initializer:正态分布
tf.truncated_normal_initializer:截取的正态分布
tf.random_uniform_initializer:均匀分布
tf.zeros_initializer:全部是0
tf.ones_initializer:全是1
tf.uniform_unit_scaling_initializer:满足均匀分布,但不影响输出数量级的随机值
不同的变量之间不能有相同的名字,这里定义了variable_scope,这样才可以有相同的名字。