TensorFlow 101 | 原理与概念

来源:互联网 发布:linux depth 编辑:程序博客网 时间:2024/05/16 12:04

image

“控制复杂性是计算机编程的本质”

TensorFlow是当今主流的深度学习框架之一,开源社区也在不断推动着它的发展中。网上(包括官方网站)有大量的教程可供参考,而本系列更多尝试从底层和应用角度对TensorFlow框架进行下梳理,首先是原理与概念介绍。

使用TensorFlow框架实现神经网络计算的基本原理是将计算的定义与执行相互分离,其中计算通过数据流图定义,会话执行数据流图上的操作。数据流图定义了整个计算过程,具有节省计算资源、便于自动微分计算、以及CPU/GPU并行、可视化直观等优势。

数据流图中,常量、操作或变量定义为节点,Tensor定义为边,即MxN维矩阵。

其中,常量通过tf.constant()定义,即在图定义过程中确定不变的量,类似于Numpy中的使用方式,包括定义给定值的矩阵、序列,或取随机数等。

操作包括基本的数学计算函数、矩阵操作、矩阵计算、赋值、神经网络激励函数、队列或控制流操作等。

变量通过tf.Variable()定义,与常量不同的是,变量值是在运行过程中动态确定的,同时必须在使用过程中初始化。

定义好的数据流图通过会话类管理运行计算过程。首先,创建一个会话对象tf.Session(),对变量节点进行赋值。会话在运行过程中会检查整个数据流图,即为得到变量的结果需计算哪些前置节点,没有依赖关系的节点将不参与计算。

值得注意的是,最好不要建多个数据流图,因为需要多个会话对象管理其运行过程,它们会共用默认的资源而可能产生冲突,尽量在一张图中使用不连接的子图来替代。

TensorBoard可用于数据流图的可视化,这在构建复杂模型时会非常有用,举个例子:

import tensorflow as tfa = tf.constant(2, name="a")b = tf.constant(3, name="b")x = tf.add(a,b)writer = tf.summary.FileWriter("/graph", sess.graph)with tf.Session() as sess:    print sess.run(x)

在命令行运行后,浏览器访问http://localhost:6000可视化结果,感兴趣的朋友动手试试看吧~

python xxx.pytensorboard --logdir="/graph" --port 6000

数据科学武林风起云涌,
随数据小虾米共闯江湖~
weixin

原创粉丝点击