tensorflow(一)入门

1:几个概念:张量,节点,计算

tensorflow : 通过图的形式,表述计算的编程系统

- tensor: 张量,
多维数组;说明了数据结构;(直观理解:图中所有的数据,包括常量、变量)

张量的使用:存储和获得计算结果(张量本身没有存储具体的数字,通过执行回话,可以得到具体的数字)

- flow:
体现了计算模型,表达了张量之间通过计算相互转化的过程;

- 计算:
(参与运算的必须是类型一样的;)

- op 节点
常量、变量、计算

- edge 节点的边
计算之间的依赖关系

- graph 图:
节点和节点的边组成为图;计算图可以隔离张量和计算,并提供了管理张量和计算的机制;

2:TensorFlow运行的两个阶段:

第一:定义图中所有的节点/(构建阶段)
定义常量、变量、计算

TensorFlow会自动将定义的计算转化为图上的节点(可通过get_default_graph获取当前默认的计算图;)

# 创建两个个常量节点
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
# 创建一个计算节点
product = tf.matmul(matrix1, matrix2)

第二:执行计算

tensorflow使用会话 执行图中的节点;
图在会话启动后,会话将图中的节点,分发到计算设备上,同时提供执行节点的方法,方法执行后,返回产生的tensor

有两种使用会话的模式

- model1:明确调用会话生成和会话关闭函数

# 创建会话:
# sess = tf.Session()

# 得到计算结果
# sess.run(xx)

# 关闭会话
# sess.close()

会话拥有tensorflow程序运行时的所有资源,计算完成以后,需要关闭对话,回收资源
弊端:当程序异常退出,关闭会话不会执行,会导致资源泄露

-model_2: 利用python上下文管理器,无需调用Session.close()

with tf.Session() as sess:
    sess.run(...)

当上下文退出时候,会话关闭、资源释放自动完成

通过设定默认会话,获取张量取值的四种方法

sess = tf.Session()
with sess.as_default():
     print(result.eval())
sess = tf.Session()
print(sess.run(result))
sess = tf.Session()
print(result.eval(session = sess))
交互环境下,
tensorflow直接构建默认会话,使用InteractiveSession会自动将生成的会话注册为默认会话,省去将产生的会话注册为默认会话的过程;
sess = tf.InteractiveSession()
print(result.eval())
sess.close()

(同时可使用Tensor.eval()和Operation.run()替代Session.run())
sess = tf.InteractiveSession()
x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])
x.initializer.run() # 使用初始化器 initializer op 的 run() 方法初始化 'x' 
sub = tf.sub(x, a)  # 增加一个减法 sub op, 从 'x' 减去 'a'. 运行减法 op, 输出结果 
print (sub.eval())
# ==> [-2. -1.]

猜你喜欢

转载自blog.csdn.net/cillameng/article/details/82184433