tensorflow google实战 学习笔记——TensorFlow入门(1)

来源:互联网 发布:linux是哪个国家的 编辑:程序博客网 时间:2024/06/05 16:09

阅读 google实战 入门tensorflow 1:

tensorflow入门

TensorFlow 是一个通过计算图的形式来表述计算的编程系统。

计算图的第一阶段定义计算,第二阶段执行计算
定义计算:

import tensorflow as tfa = 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 tfg1 = 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,这样才可以有相同的名字。