机器学习

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种不同的数据类型,主要包括整数,浮点数,复数:

  1. tf.int8
  2. tf.int16
  3. tf.int32
  4. tf.int64
  5. tf.uint8
  6. tf.float32
  7. tf.float64
  8. tf.bool
  9. tf.complex64
  10. 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来执行这些运算。

上一篇下一篇

猜你喜欢

热点阅读