TensorFlow入门(一)计算图、张量、会话
2018-07-17 本文已影响50人
又双叒叕苟了一天
导入模块:
import tensorflow as tf
TensorFlow计算模型——计算图
TensorFlow会有一个默认的图,但是我们也能去定义一个图,每个图的张量和运算都是独立,不共享的。定义方式:
g = tf.Graph()
with g.as_default():
#一些张量的操作
会话中,运行该图:
with tf.Session(graph=g):
#一些run操作
TensorFlow数据模型——张量
张量可以理解为多维数组。零阶张量表示为标量,一阶张量为向量,n阶张量为n维数组。
a = tf.constant([1.0, 2.0],name="a")#声明了一个a的常数张量
不过张量并没有实际保存数字,而是保存的得到这些数字的计算过程。
张量在参与运算时,要注意类型一致,不能犯下面错误:
a = tf.constant([1, 2], name="a")
b = tf.constant([1.0, 2.0], name="b")
result = a + b
当然我们在声明的时候加入类型声明:
a = tf.constant([1, 2], name="a", dtype=tf.float32)
就不会出错了。
TensorFlow支持14种不同的数据类型,主要包括整数,浮点数,复数:
- tf.int8
- tf.int16
- tf.int32
- tf.int64
- tf.uint8
- tf.float32
- tf.float64
- tf.bool
- tf.complex64
- tf.complex128
TensorFlow运行模型——会话
张量定义了运算,然后通过会话来执行运算。
创建和关闭会话:
sess = tf.Session()
sess.run(...)
sess.close()
由于一些意外,没有close会造成资源泄露,所以我们用更安全的方式,上下文管理器来使用会话:
with tf.Session() as sess:
sess.run(...)
会话和图一样可以有多个,但是不会默认产生一个,至少要自己声明一个默认的:
sess = tf.Session()
with sess.as_default():
print(result.eval())#run了result的运算
下面代码实现同样功能:
sess = tf.Session()
print(sess.run(result))
print(result.eval(session=sess))
小结
张量为TensorFlow的数据模型,存储着得到该数据的运算方式。
在图中,对张量进行一系列运算的组织。
通过session来执行这些运算。