1.Tensorflow的基本概念:

1.Tensorflow的基本概念:

  • 1.使用图(graphs)来表示计算任务
  • 2.在被称之为会话(Session)的上下文(context)中执行图

  • 3.使用tensor表示数据

  • 4.通过变量(Variable)维护状态

  • 5.使用feed和fetch可以为任意的操作赋值或者从其中获取数据

Tensorflow是一个编程系统,使用图(graphs)来表示任务,图(graphs)中的节点称之为op(operation),一个获得0个或多个Tensor,执行计算,产生0个或多个Tensor.Tensor看做是一个n维的数组或列表。图必须在会话(Session)里被启动。

                                           图的基本框架

 常量的使用

 1 import tensorflow as tf
 2 
 3 a1 = tf.constant([[2, 3]])  # 定义一个常量
 4 a2 = tf.constant([[3], [3]])
 5 result = tf.matmul(a1, a2)  # 将两个常量相乘
 6 print(result)  # result是一个tonsor,所有的graphs都必须在会话(session)中执行
 7 # Tensor("MatMul:0", shape=(1, 1), dtype=int32)
 8 sess = tf.Session()  # 创建会话
 9 result = sess.run(result)
10 print(result)  # 返回计算的结果
11 sess.close()  # 关闭会话
12 # [[15]]
13 """
14 可以用python的with来自行关闭会话:
15 with tf.Session() as sess:
16     result = sess.run(result)
17     print(result)
18 """

 变量的使用

 1 import tensorflow as tf
 2 
 3 # 定义一个变量
 4 a1 = tf.Variable(0)
 5 # 定义一个常量
 6 a2 = tf.constant(2)
 7 #  创建相减的op
 8 sub = tf.subtract(a1, a2)
 9 #  创建相加的op
10 add = tf.add(a1, a2)
11 """
12 with tf.Session() as sess:
13     sess.run(sub)
14 这时候直接运行会报错,因为Variable(变量)没有初始化
15 """
16 init = tf.global_variables_initializer()  # 全局变量初始化
17 
18 with tf.Session() as sess:
19     sess.run(init)
20     result = sess.run(sub)
21     print(result)  # 0 - 2 = -2
22     result = sess.run(add)
23     print(result)  # 0 + 2 = 2

 

Variable和Tensor之间的区别:

  • Variable是可更改的,而Tensor是不可更改的。
  • Variable用于存储网络中的权重矩阵等变量,而Tensor更多的是中间结果等。
  • Variable是会显示分配内存空间的,需要初始化操作(assign一个tensor),由Session管理,可以进行存储、读取、更改等操作。相反地,诸如Const, Zeros等操作创造的Tensor,是记录在Graph中,所以没有单独的内存空间;而其他未知的由其他Tensor操作得来的Tensor则是只会在程序运行中间出现。
  • Tensor可以使用的地方,几乎都可以使用Variable。

 tensorflow的赋值操作

 1 import tensorflow as tf
 2 
 3 # 定义一个变量
 4 a1 = tf.Variable(0)
 5 # 定义一个常量
 6 a2 = tf.constant(2)
 7 #  创建相减的op
 8 sub = tf.subtract(a1, a2)
 9 #  创建相加的op
10 add = tf.add(a1, a2)
11 
12 init = tf.global_variables_initializer()  # 全局变量初始化
13 
14 update = tf.assign(a1, add)  # tensorflow里面的赋值要调用tf.assign方法
15 
16 with tf.Session() as sess:
17     sess.run(init)
18     result = sess.run(sub)
19     print(result)  # 0 - 2 = -2
20     result = sess.run(add)
21     print(result)  # 0 + 2 = 2
22     for i in range(5):
23         result = sess.run(update)
24         print(result)  # 2 4 6 8 10

 

posted @ 2019-03-21 13:32  Ivy丶  阅读(327)  评论(0)    收藏  举报