TensorFlow层次结构中的三种计算图

三种计算图

所谓计算图,计算图由节点(nodes)和线(edges)组成。节点表示操作符 Operator,或者称之为算子,线表示计算间的依赖。实线表示有数据传递依赖,传递的数据即张量。虚线通常可以表示控制依赖,即执行先后顺序。

有三种计算图的构建方式:静态计算图,动态计算图,以及 Autograph。在 TensorFlow1.0 时代,采用的是静态计算图,需要先使用 TensorFlow 的各种算子创建计算图,然后再开启一个会话 Session,显式执行计算图。

而在 TensorFlow2.0 时代,采用的是动态计算图,即每使用一个算子后,该算子会被动态加入到隐含的默认计算图中立即执行得到结果,而无需开启 Session。而在 TensorFlow2.0 时代,采用的是动态计算图,即每使用一个算子后,该算子会被动态加入到隐含的默认计算图中立即执行得到结果,而无需开启 Session。

使用动态计算图即 Eager Excution 的好处是方便调试程序,它会让 TensorFlow 代码的表现和 Python 原生代码的表现一样,写起来就像写 numpy 一样,各种日志打印,控制流全部都是可以使用的。使用动态计算图的缺点是运行效率相对会低一些。因为使用动态图会有许多次 Python 进程和 TensorFlow 的 C++进程之间的通信。而静态计算图构建完成之后几乎全部在 TensorFlow 内核上使用 C++ 代码执行,效率更高。此外静态图会对计算步骤进行一定的优化,剪去和结果无关的计算步骤。

如果需要在 TensorFlow2.0 中使用静态图,可以使用@tf.function 装饰器将普通 Python 函数转换成对应的 TensorFlow 计算图构建代码。运行该函数就相当于在 TensorFlow1.0 中用 Session 执行代码。使用 tf.function 构建静态图的方式叫做 Autograph.

静态计算图

在 TensorFlow 1.0 中,使用静态计算图分两步,第一步定义计算图,第二步在会话中执行计算图。

 
 
import tensorflow as tf

#定义计算图
g = tf.Graph()
with g.as_default():
    #placeholder为占位符,执行会话时候指定填充对象
    x = tf.placeholder(name='x', shape=[], dtype=tf.string)
    y = tf.placeholder(name='y', shape=[], dtype=tf.strin
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FNN(全连接神经网络)是一种基于神经元之间完全互联的人工神经网络模型,它主要由输入层、多个隐层和输出层组成。在TensorFlow,可以使用多种方式来实现FNN网络,例如:通过构建计算实现、使用Keras搭建FNN网络等。 构建计算TensorFlow的核心思想之一,其实现FNN也是一种常用方式。首先,需要定义输入和输出数据的占位符,以便在计算接收外部数据。然后,通过tf.Variable定义权重和偏置项,并使用tf.matmul和tf.add等操作定义计算过程。在定义好网络结构后,可以使用tf.train.GradientDescentOptimizer或其他优化器对网络进行训练,优化参数以最小化损失函数。最后,在训练完成后,可以使用训练好的参数对新数据进行预测。 另外,使用Keras搭建FNN网络可以更加简单和高效。Keras是一个高水平的神经网络API,它可以在TensorFlow的高层次接口上进行封装。在Keras,可以通过Sequential()函数轻松地搭建FNN网络。例如,使用Sequential()函数可以轻松地添加多个Dense层,每个层的节点数量可以通过传递参数定义。使用compile()函数可以编译模型,并通过训练数据和标签来训练模型。在训练完成后,可以使用evaluate()函数对模型进行评估,并使用predict()函数对新数据进行预测。 总之,使用TensorFlow实现FNN网络有多种方法,可以根据实际需要选择不同的方式进行实现。例如,构建计算是一种灵活的方式,而使用Keras搭建FNN网络可以更加简单和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值