TensorFlow入门

计算模型--计算图

TensorFlow用计算图来描述计算,我们可以用tensorboard将计算图可视化。

1. 新建graph.py


import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

# 定义常量a,b 命名为value_a和value_b;定义乘操作c 命名为maltiply_c;定义加操作d,e 命名为add_d和add_e
a = tf.constant(5,name='value_a')
b = tf.constant(3,name='value_b')
c = tf.multiply(a,b,name='maltiply_c')
d = tf.add(a,b,name='add_d')
e = tf.add(d,c,name='add_e')
sess=tf.Session()
sess.run(e)

# 将计算图写入events文件里面,tensorboard可以从events文件里面读取数据并显示在web页面上
writer=tf.summary.FileWriter('/graphs',sess.graph)
writer.flush()
writer.close()
sess.close()

2. 运行之后在项目graphs目录会生成一个events文件。

3. 命令行cd到graphs目录

tensorboard --logdir=./graphs --host=127.0.0.1 --port=8080,启动tensorboard

4. 打开浏览器访问http://127.0.0.1:8080

  • 每个节点都是一个运算,每一条边代表计算之间的依赖关系。如果一个运算的输入依赖于另一个运算的输出它们就具有依赖关系。

  • 这个运算图中value_avalue_b两个常量不依赖于任何其他计算。

  • 运算add_dmaltiply_c的输入则要依赖value_avalue_b两个变量。

  • 运算add_e的输入也要依赖add_dmaltiply_c的输出。

tensorboard启动报错

如果tensorboard --logdir=./graphs --host=127.0.0.1 --port=8080启动报错

ImportError: Something is wrong with the numpy installation. While importing we detected an older version of numpy in ['f:\anaconda\anaconda\lib\site-packages\numpy']. One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall this version.

1. pip uninstall numpy删除numpy

2. 重复1操作直到提示未安装

3. pip install numpy

4. 重新运行即可

数据模型--张量

TensorFlow的所有数据的数据都是通过张量(tensor)来表示,张量也可以表示为多维数组。

  • 零阶张量表示为标量也就是第一个数,第一阶张量为向量也就是一个一维数组,第n阶张量可以理解为一个n维数组。

  • 张量在tensorflow中的实现并不是直接采用数组的形式,只是对运算结果的引用。并不真正保存数字而是保存如何得到这些数字的计算过程。


import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

a = tf.constant([1.0,2.0],name='value_a')
b = tf.constant([2.0,3.0],name='value_b')
result = tf.add(a,b, name='add')
print(result)

我们可以看到张量的三个重要的属性:

1. 名字(name),为张量的唯一标识符,同时也表示张量是如何计算出来的如上面的add:0就表示result这个张量是计算节点add输出的第一个结果

2. 维度(shape)描述了一个张量的维度信息,shape=(2,)表示张量result是一个一维数组,且数组的长度为2

3. 类型(dtype),每个张量都会有唯一的类型,参与运算的张量的类型要相互匹配,要不然会报错

如果我们添加一个类型不一样的张量,进行add运算则会报错。


c = tf.constant(4,name='value_c')
result2 = tf.add(b,c, name='add2')
print(result2)

运行模型--会话

TensorFlow用会话来管理运行时的所有资源


# 创建一个会话
sess=tf.Session()
# 创建一个会话
sess.run(...)
# 关闭会话释放资源
sess.close()

  • 如果程序因为异常退出时,不会执行close函数,所以会话资源就得不到释放。所以通过python上下文来管理会话,避免出现这种情况。

with tf.Session() as sess
   
    sess.run(...) 
    
    # 则无需close

posted @ 2019-09-12 16:43  可爱的黑精灵  阅读(340)  评论(0编辑  收藏  举报