TensorFlow是一个通过计算图的形式表述计算的编程系统。计算图是一个有向图,由一组节点和一组有向边构成。每个节点代表一个操作,是一种运算;每条边代表节点之间的关系(数据传递-实线常规边,控制依赖-虚线特殊边)。
会话(session):拥有并管理TensorFlow程序运行时的所有资源,当所有计算完成之后需要关闭会话帮助系统回收资源。
import tensorflow as tf
hello=tf.constant('Hello, TensorFlow!') # 创建一个常值运算,将作为一个节点加入到默认计算图中
sess=tf.compat.v1.Session() # 创建会话
print(sess.run(hello)) # 运行并获得结果: b'Hello, TensorFlow!'
sess.close() # 关闭session
Remark: 输出前面的'b' 表示Bytes literals(字节文字)
import tensorflow as tf
tens1 = tf.constant([1,2,3])
sess = tf.Session()
try:
print(sess.run(tens1)) # [1 2 3]
except:
print('Exception!')
finally:
sess.close()
使用会话的几种方式
一:
import tensorflow as tf
node1 = tf.constant(3.0,tf.float32,name='node1')
node2 = tf.constant(4.0,tf.float32,name='node2')
node3 = tf.add(node1,node2)
print(node3) # Tensor("Add:0", shape=(), dtype=float32)
# 输出的结果不是一个数字,而是一个张量结构
sess=tf.Session()
print(sess.run(node3)) # 7.0
sess.close() # 关闭session
二:
import tensorflow as tf
node1 = tf.constant(3.0,tf.float32,name='node1')
node2 = tf.constant(4.0,tf.float32,name='node2')
node3 = tf.add(node1,node2)
with tf.Session() as sess: # 创建会话,并通过python中的上下文管理器来管理这个会话
print(sess.run(node3)) # 7.0
此时,不需要再调用Session.close()来关闭会话,当退出时自动关闭会话并释放资源
三:指定默认的会话
import tensorflow as tf
node1 = tf.constant(3.0,tf.float32,name='node1')
node2 = tf.constant(4.0,tf.float32,name='node2')
node3 = tf.add(node1,node2)
sess=tf.Session()
with sess.as_default():
print(node3.eval()) # 7.0
四:
import tensorflow as tf
node1 = tf.constant(3.0,tf.float32,name='node1')
node2 = tf.constant(4.0,tf.float32,name='node2')
node3 = tf.add(node1,node2)
sess=tf.Session()
print(node3.eval(session=sess)) # 7.0
sess.close()
五:交互环境下设置默认会话
import tensorflow as tf
node1 = tf.constant(3.0,tf.float32,name='node1')
node2 = tf.constant(4.0,tf.float32,name='node2')
node3 = tf.add(node1,node2)
sess = tf.InteractiveSession()
print(node3.eval()) # 7.0
sess.close()
在TensorFlow中,所有数据都通过张量的形式来表示。
张量并没有真正保存数字,它保存的是计算过程。
张量的属性:
- 名字(name):"node:src_output" 表示 “节点名称:来自节点的第几个输出”。
- 形状(shape):()表示标量。
- 类型(dtype):不带小数点被默认为int32,带小数点则被默认为float32。
import tensorflow as tf
scalar = tf.constant(100)
vector = tf.constant([1,2,3,4,5])
matrix = tf.constant([[1,2,3],[4,5,6]])
tens1 = tf.constant([[[1,2,2],[2,2,3]],[[3,5,6],[5,4,3]],
[[7,0,1],[9,1,9]],[[11,12,7],[1,3,14]]],name='tens1')
print(scalar.get_shape()) # ()
print(vector.get_shape()) # (5,)
print(matrix.get_shape()) # (2, 3)
print(tens1.get_shape()) # (4, 2, 3)
sess = tf.Session()
print(sess.run(tens1)[1,1,0]) # 获取元素:5
sess.close()
以上。参考Mooc课程是吴明晖老师的《深度学习应用开发-TensorFlow实践》。