上一节我们安装好了Tensorflow,https://blog.csdn.net/hao5119266/article/details/103793126
本篇会讲解Tensorflow的基础使用
目录
1.Hello world
打开Prompt,先激活tensorflow环境,再进入Pyhon(以后不再赘述)
activate tensorflow
python
最简单的Hello world程序:
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
hello = tf.constant('hello,world')
sess= tf.compat.v1.Session()
print(sess.run(hello))
2.TensorFlow系统架构
(1)TensorFlow是什么
TensorFlow是由Google主导的一个深度学习的架构,自开源以来发展迅速。特点为支持多种环境,一般分为CPU版和GPU版。Github工程地址:https://github.com/tensorflow/tensorflow。
(2)TensorFlow系统架构
如图所示:
客户端(Client)是前端系统的主要组成部分,它是一个支持多语言的编程环境。提供编程模型,负责构造计算图;
运算机制(Distributed Runtime):
1)Distributed Master:从计算图(graph)中反向遍历,找到所依赖的特定子图(subgraph),再把此子图分割成子图片段派发给Work Services,随后不同的Work Service执行其收到的子图片段。
2)Work Services:Work Services通常是多个设备,不同的Work Service会相互发送和接收计算结果。通常通过调用Kernel实现完成运算。
Kernel:是算子(Operation,后面会讲)在不同硬件设备的运行和实现,负责执行具体的运算。
如下图 ,客户端启动Session(作为会话,主要功能是指定操作对象的执行环境)并把定义号的数据流图传给执行层,Distributed-Master进程拆解最小子图发给WorkerService,WorkerService调用跨设备的Kernel的Operation,利用各个资源完成运算。
现在看不太懂也没太大关系,现在能够了解TensorFlow的大致工作流程就算达到了目的,后续会详细说明。
3.TensorFlow基本概念
基本概念是本篇的重点。TensorFlow数据流图一般包括张量(Tensor)、算子(Operation)、会话(Session)、
变量(Variables)、占位符(Place Holder)和图(Graph)等。
3.1张量
张量(Tensor)可以理解为多为数组,0阶张量为纯量或者标量(Scalar),也就是一个数值,比如[1];一阶张量就是
向量(Vector),比如[1,2,3];二阶张量为矩阵(Matrix),比如[ [1,2,3],[4,5,6],[7,8,9] ],以此类推。
张量对象用形状(Shape)属性来定义结构,Python中的元组和列表都可以定义张量的形状。张量每一维可以是固定长度,也可以用None表示为可变长度。
import tensorflow as tf
#指定0阶张量
t_list=[]
t_tuple=()
#指定一个长度为2的向量
t_1=[2]
#指定一个2*3的矩阵
t_2=(2,3)
#表示任意长度的向量
t_3=[None]
#表示行数任意列数为2的矩阵
t_4=(None,2)
#表示一维长度为3,第二维长度为2,第三维长为任意的3阶张量
t_5=[3,2,None]
3.2算子
对张量进行计算叫做算子(operation,简称op),它是对张量执行运算的节点。
常见的算子有
算子类别 | 示例 |
数值计算 | add,sub,multiply,div,exp,log,greater,less,equal |
多维数组运算 | concat,slice,splite,constant,rank,shape,shuffle |
矩阵运算 | matmul,matrixinverse,matrixdeterminant |
状态管理 | variable,assign,assignadd |
神经网络 | softmax,sigmoid,relu,convolution2d,maxpool |
检测点 | save,restore |
队列和同步 | enqueue,dequeue,mutexacquire,mutexrelease |
控制张量流动 | merge,switch,enter,leave,nextiteration |
3.3计算图
Tensorflow中Graph默认缺省,它会自动帮我们构建缺省Graph,并添加tensor和op。如果有特殊要求需要自己自定义计算图。
创建Graph,例:
import tensorflow as tf
#创建数据流图
graph=tf.Graph()
#向数据流图中添加op
with graph.as_default():
a=tf.add(2,4)
b=tf.multiply(2,4)
如果有多个Graph,则如下处理:
import tensorflow as tf
g1=tf.Graph()
g2=tf.Graph()
with g1.as_default():
#此处添加相应tensor和op
with g2.as_default():
#此处添加相应tensor和op
4.会话
Graph仅仅定义了所有op和tensor流向,没有进行任何计算。而session根据graph的定义分配资源,计算op,得出结果。
tf.Session(target=",graph=None,config=None)
target参数一般为空字符串,它指定要使用的执行引擎。在分布式设置中使用Session对象时,该参数用于连接不同tf.train.Server实例。
graph参数指定将要在Session中加载的Graph对象,默认值为None,表示使用当前默认数据流图。
config参数允许用户选择Session的配置,例如限制CPU或者GPU的使用量,设置图中的优化参数,日志选项。
#创建Session对象
sess=tf.Session()
创建Session对象后,需要用其主要方法run()来运行或计算所期望的张量对象。Session.run()接收一个必选参数fetches,三个可选参数:feed_dict、options和run_metadata.
例:
import tensorflow as tf
a=tf.add(2,4)
b=tf.multiply(a,5)
s=ft.Session()
s.run(b)
s.run([a,b])
下篇:https://blog.csdn.net/hao5119266/article/details/104084581