从零搭建人脸识别系统(3)Tensorflow 基础

上一节我们安装好了Tensorflow,https://blog.csdn.net/hao5119266/article/details/103793126

本篇会讲解Tensorflow的基础使用

目录

1.Hello world   

2.TensorFlow系统架构

(1)TensorFlow是什么

(2)TensorFlow系统架构 

3.TensorFlow基本概念

3.1张量

3.2算子

3.3计算图

4.会话 


 

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,后面会讲)在不同硬件设备的运行和实现,负责执行具体的运算。

                            tensorflow 系统概述

如下图 ,客户端启动Session(作为会话,主要功能是指定操作对象的执行环境)并把定义号的数据流图传给执行层,Distributed-Master进程拆解最小子图发给WorkerService,WorkerService调用跨设备的Kernel的Operation,利用各个资源完成运算。         

tensorflow 分布式

现在看不太懂也没太大关系,现在能够了解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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值