TensorFlow底层架构揭秘

照猫画虎地使用了一段时间TensorFlow,开源项目也调了好些个,但是在深入到具体细节的时候,发现完全不知其所以然。所以决定抽点时间把基础知识补一补,省得以后继续抓瞎。

众所周知,TensorFlow是由Google开源的机器学习算法库,自2015年发布以来,在全球范围内受到了极大的关注,用户量一直居于各大机器学习框架之首。TensorFlow支持PC、服务器、移动端、嵌入式等各种平台,开放了Python、C++和Java等语言的接口,可以说受众非常广。对于初学者来说,Python无疑是上手最快的。

TensorFlow中几个比较重要的概念是:图、会话、张量、节点。

图:TensorFlow中将计算表示为指令之间依赖关系的一种方法。

会话:TensorFlow跨一个或多个本地或远程设备运行数据流图的机制。

张量:TensorFlow中的基本数据对象。

节点: 提供图中执行的操作。

以上解释比较抽象,下面一个经典小例子可以帮助理解。

登录后复制

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# Create graph
g = tf.Graph()

#在图中定义数据和指令关系
with g.as_default():
    a = tf.constant(2)
    b = tf.constant(6)
    c = tf.add(a, b)
    print("Without session, c = ", c)

    #init = tf.initialize_all_variables()   # would be deprecated usage
    init = tf.global_variables_initializer()

#在会话中执行图
#Implement graph in session
with tf.Session(graph  = g) as sess:
    sess.run(init)
    print("With session, c = ", sess.run(c))
    
    



以上例子的执行结果为:

tensorflow架构分析 tensorflow底层架构_人工智能

从以上示例中可以看到,TensorFlow程序通常被组织成两个阶段,一个是图构建阶段,一个是图执行阶段。

在图构建阶段,定义数据(张量Tensor)和操作(节点Op),数据与操作的执行步骤被描述成一个图。

在图执行阶段,使用会话来执行构建好的图,即调用各种资源将定义好的数据和操作运行起来。

tensorflow架构分析 tensorflow底层架构_数据_02

TensorFlow的名称其实已经很好地反应了该框架的特点,即Tensor + Flow,使用数据的流动(数据流图)来实现数值计算。如上图所示,节点(Operation)在图中表示数学操作,线(Edges)则表示在节点间流动的多维数据,也就是张量Tensor。

注:以上例程基于TensorFlow 1.x,在TensorFlow 2.x中,对使用步骤执行了简化。不再需要在会话中执行计算,而是直接执行计算,如下:

登录后复制

import tensorflow as tf


#定义常量a,b
a = tf.constant(2)
b = tf.constant(6)

#执行加法计算
c = tf.add(a, b)

print("c = ", c.numpy())


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空