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_a
和value_b
两个常量不依赖于任何其他计算。 -
运算
add_d
和maltiply_c
的输入则要依赖value_a
和value_b
两个变量。 -
运算
add_e
的输入也要依赖add_d
和maltiply_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