TensorFlow小程序(一):基础知识

1 Tensorflow计算模型——计算图

计算图是Tensorflow中最基本的一个概念,Tensorflow中的所有计算都会转化为计算图上的节点。TensorFlow的名字中包含了它最重要的两个概念——Tensor和Flow。Tensor就是张量,在TensorFlow中,张量简单地被理解为多维数组。Flow直观地表达了张量之间通过计算相互转化的过程。Tensorflow是一个通过计算图的形式来表达计算的编程系统。
Tensorflow程序一般分为两个阶段,第一阶段为定义图中所有的计算,第二阶段为执行计算。
计算定义阶段:

   import tensorflow as tf
    m1=tf.constant([[3,3]],name=“m1”) #创建一个常量op 一行两列
    m2=tf.constant([[2],[3]],name="m2") #创建一个常量op 两行一列
    result=m1+m2

2Tensorflow数据模型——张量

张量是Tensorflow管理数据的形式,张量可以被简单理解为多维数组。其中零阶张量表示标量(scalar)也是一个数;第一阶张量为向量(vector),是一个一维数组;第n阶张量为n维数组。在张量中并没有真正的保存数字,它保存的是如何得到这些数字的计算过程。
一个张量的主要保存了三个属性:名字(name)、维度(shape)、类型(type)
例:a=tf。constant([1,2],name=“a”,dtype=tf.float32)
张量使用主要总结为两大类:第一类是中间计算结果的引用,上一节的程序中若直接用result=tf.constant([[3,3]],name=“m1”)+tf.constant([[2],[3]],name=“m2”)计算向量的和,可读性会比较差。第二类是当计算图构造完成后,张量可以用来获取计算结果,得到真实的数字。

3Tensorflow运行模型——会话

Tensorflow中使用会话(session)的模式一般有两种:第一种需要明确调用会话生成函数和关闭会话函数,代码如下:

sess=tf.Session()   #创建一个会话
sess.run()               #使用这个创建好的会话得到运算结果,如:sess.run(result)
sess.close()           #关闭会话使本次运行中使用的资源被释放

第二种:

with tf.Session()as sess:
      sess.run()       #不需要再调用sess.close()函数来关闭会话

简单小程序:

import tensorflow as tf
state=tf.Variable(0,name='counter')     #创建一个变量初始化0
new_value=tf.add(state,1)                   #创建一个op,作用是使state加1
update=tf.assign(state,new_value)      #赋值op,把new_value的值赋给state
init=tf.global_variables_initializer()       #定义变量,需要变量初始化
sess=tf.Session()
sess.run(init) 
for _ in range(5):
  sess.run(update)      
  print(sess.run(state))
sess.close

运行结果:
1
2
3
4
5

4 Tensorflow中的feed与fetch

Feed操作是指首先建立占位符, 然后把占位符放入op中。在run op的时候, 再把要op的值传进去, 以达到使用时再传参数的目的
语法: 首先创建placeholder 然后再在run的时候把值以字典的方式传入run

#feed
#创建占位符
import tensorflow as tf
input1=tf.placeholder(tf.float32) #占位符
input2=tf.placeholder(tf.float32)
output=tf.multiply(input1,input2)
with tf.Session()as sess:
    print(sess.run(output, feed_dict={input1:[8.],input2:[3.]}))     #用feed_dict以字典的方式填充占位
   #提供字典填充函数,使输入和输出更为简单:feed_dict = {}

运行结果:[24.]

Fetch操作是指TensorFlow的session可以一次run多个op
语法: 将多个op放入数组中然后传给run方法

import tensorflow as tf
input1=tf.constant(3.0)  #fetch
input2=tf.constant(2.0)
input3=tf.constant(5.0)
add=tf.add(input2,input3)
mul=tf.multiply(input1,add)
with tf.Session()as sess:
    result=sess.run([mul,add])
    print(result)

运行结果:[21.0, 7.0]

参考书:《TensorFlow实战Google深度学习框架》——郑泽宇 顾思宇 著

猜你喜欢

转载自blog.csdn.net/weixin_43152685/article/details/88815933
今日推荐