TensorFlow2 Eager Execution模式

简介: 【8月更文挑战第18天】TensorFlow2 Eager Execution模式。

TensorFlow2 Eager Execution模式
Eager Execution介绍:
TensorFlow的Eager Execution模式是一种命令式编程(imperative programming),这和原生Python是一致的,当你执行某个操作时,可以立即返回结果的。

Graph模式介绍:
TensorFlow1.0一直是采用Graph模式,即先构建一个计算图,然后需要开启Session,喂进实际的数据才真正执行得到结果。
Eager Execution模式下,我们可以更容易debug代码,但是代码的执行效率更低。
下面我们在Eager Execution和Graph模式下,用TensorFlow实现简单的乘法,来对比两个模式的区别。

代码:
x = tf.ones((2, 2), dtype=tf.dtypes.float32)
y = tf.constant([[1, 2],
[3, 4]], dtype=tf.dtypes.float32)
z = tf.matmul(x, y)
print(z)

输出:
tf.Tensor(
[[4. 6.]
[4. 6.]], shape=(2, 2), dtype=float32)

代码:

在TensorFlow 2版本中使用1.X版本的语法;可以使用2.0中的v1兼容包来沿用1.x代码,并在代码中关闭eager运算。

import TensorFlow.compat.v1 as tf
tf.disable_eager_execution()

创建graph,定义计算图

a = tf.ones((2, 2), dtype=tf.dtypes.float32)
b = tf.constant([[1, 2],
[3, 4]], dtype=tf.dtypes.float32)
c = tf.matmul(a, b)

开启绘画,进行运算后,才能取出数据。

with tf.Session() as sess:
print(sess.run(c))

输出:
[[4. 6.]
[4. 6.]]

首先重启一下kernel,使得TensorFlow恢复到2.0版本并打开eager execution模式。 Eager Execution模式的另一个优点是可以使用Python原生功能,比如下面的条件判断:

代码:
import TensorFlow as tf
thre_1 = tf.random.uniform([], 0, 1)
x = tf.reshape(tf.range(0, 4), [2, 2])
print(thre_1)
if thre_1.numpy() > 0.5:
y = tf.matmul(x, x)
else:
y = tf.add(x, x)

输出:
tf.Tensor(0.11304152, shape=(), dtype=float32)

这种动态控制流主要得益于eager执行得到Tensor可以取出numpy值,这避免了使用Graph模式下的tf.cond和tf.while等算子。

目录
相关文章
|
3月前
|
TensorFlow API 算法框架/工具
【Tensorflow】解决Inputs to eager execution function cannot be Keras symbolic tensors, but found [<tf.Te
文章讨论了在使用Tensorflow 2.3时遇到的一个错误:"Inputs to eager execution function cannot be Keras symbolic tensors...",这个问题通常与Tensorflow的eager execution(急切执行)模式有关,提供了三种解决这个问题的方法。
42 1
|
PyTorch TensorFlow 算法框架/工具
斯坦福tensorflow教程(四) 贪婪执行Eager Execution
TensorFlow饱受诟病的痛点就是只支持静态图模型。也就是说,在处理数据前必须预先定义好一个完整的模型。如果数据非常规整,那还好。但实际工程和研究项目中的数据,难免有一些边角的情况。很多项目,其实需要大量实验才能选择正确的图模型。这就很痛苦了。因此,很多项目转而采用了PyTorch等支持动态图模型的框架,以便在运行程序的时候动态修正模型。
115 0
斯坦福tensorflow教程(四) 贪婪执行Eager Execution
|
机器学习/深度学习 存储 人工智能
TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了
8 月中旬,谷歌大脑成员 Martin Wicke 在一封公开邮件中宣布,新版本开源框架——TensorFlow 2.0 预览版将在年底之前正式发布。今日,在上海谷歌开发者大会上,机器之心独家了解到一个重大的改变将会把 Eager Execution 变为 TensorFlow 默认的执行模式。这意味着 TensorFlow 如同 PyTorch 那样,由编写静态计算图全面转向了动态计算图。
206 0
TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了
|
12天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
43 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
12天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
42 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
12天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
52 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
28天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
110 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
3月前
|
机器学习/深度学习 算法 TensorFlow
深入探索强化学习与深度学习的融合:使用TensorFlow框架实现深度Q网络算法及高效调试技巧
【8月更文挑战第31天】强化学习是机器学习的重要分支,尤其在深度学习的推动下,能够解决更为复杂的问题。深度Q网络(DQN)结合了深度学习与强化学习的优势,通过神经网络逼近动作价值函数,在多种任务中表现出色。本文探讨了使用TensorFlow实现DQN算法的方法及其调试技巧。DQN通过神经网络学习不同状态下采取动作的预期回报Q(s,a),处理高维状态空间。
59 1
下一篇
无影云桌面