使用 TensorFlow 2.0 进行深度学习:您需要知道的一切
已发表: 2021-01-05TensorFlow 是 Google 的机器学习框架。 它主要用于与深度学习相关的任务,并与其他 Google API 无缝集成。 TensorFlow 显然是目前业界最常用的深度学习库之一,完全值得学习!
在本教程结束时,您将了解以下知识。
- 什么是 TensorFlow?
- TF 2.0 有什么新功能?
- TensorFlow 与 Keras
- 安装 TensorFlow
- TensorFlow 中的图像分类器
目录
什么是 TensorFlow?
TensorFlow 最初是 Google 的开源深度学习库,现在是端到端机器学习过程的完整框架。 您可能想知道 Google 为什么选择这个名称以及“Tensor”是什么意思。
什么是张量?
张量实际上是多维数组,使您能够对多维数组执行复杂的操作。 但是,它们不仅仅是一个 N 维数组。
张量还包括点积、加法、矩阵乘法等变换。
但为什么它们很重要?
张量并不新鲜。 它们已经使用了很长时间,但它们的特性在深度学习领域被大量利用,其中数据通常是巨大的和多维的。

张量,就像 Numpy 数组一样,也有形状和数据类型。 所有的张量都是不可变的,就像 Python 的数字和字符串:你永远不能更新一个张量的内容,只能创建一个新的。
但是,它们与通常的 Numpy 数组的不同之处在于它们能够利用 GPU 内存和计算能力,这在数据是高维且大小为数百万或更多时至关重要。
张量在 Facebook 的 Pytorch 和谷歌的 TensorFlow 等深度学习框架中得到了高度使用,甚至以它们的名字命名!
谷歌还开发了另一个人工智能加速器,称为张量处理单元 (TPU),特别是针对 TensorFlow,它将优化提升到一个新的水平!
阅读:深度学习中的正则化
TF 2.0 有什么新功能?
Google 于 2015 年由 Google Brain 团队发布了 TensorFlow 1 的第一个版本。
使用 TensorFlow 1.x 制作神经网络并非易事,因为它需要编写大量代码。
懒惰的评价与急切的评价
使用 TensorFlow 1.x,过去需要创建会话并运行这些会话以生成任何“图形”的输出。 让我们用下面的代码来理解这一点
将张量流导入为 tf a = tf.constant(1) |
运行上面的代码不会给你想要的输出,即 3。这是因为 TensorFlow 1.x 在会话中工作。
会话是一种包含所有变量和它需要进行的转换的环境。
制作了一个转换图,直到通过运行 tf.session.run() 专门调用它才被评估。
因此,如果您这样做,上面的代码将返回您所期望的:
tf.Session.run(c) |
这称为惰性评估。 因为它懒惰地等待,直到它被明确告知运行。
这个漫长而复杂的过程需要解决,因此需要 TensorFlow 2.x。
TF 2.x 默认带有 Eager 评估,这使我们非常容易编码和运行进程。
现在没有会话,在 TF 1.x 中花费 100 行的神经网络训练在 TF 2.x 中花费不到 20 行。
TensorFlow 的 Eager Execution 是一种命令式编程环境,它可以立即评估操作,而无需构建图:操作返回具体值,而不是构建稍后运行的计算图。
这使得开始使用 TensorFlow 和调试模型变得容易,并且还减少了样板代码。
TensorFlow 与 Keras
问题真的不在于 TensorFlow 与 Keras。 它是带有 Keras 的 TensorFlow。 Keras 在 TensorFlow 1.x 上提供了一个高级 API,这使得使用它变得非常容易。

现在有了 TF 2.0,TensorFlow 已正式将 Keras 作为其 API 的一部分,用于使用 tf.keras 进行模型设计和训练。
之前在 Keras 中完成的所有代码现在建议在 TF 2.0 中使用 tf.keras 完成,因为它允许它使用所有 TensorFlow 组件和生态系统,例如:
- TensorFlow Serving用于无缝地服务/部署 TensorFlow 模型。
- TensorFlow Lite是 TensorFlow 的移动版本,能够在 Android 和 IOS 上运行。
- TensorFlow.js是一组 API,允许我们使用低级 JavaScript 线性代数库或高级层 API 构建和训练模型。 因此,深度学习模型可以在浏览器中进行训练和运行。
- TensorBoard是一套可视化工具,用于理解、调试和优化 TensorFlow 程序。
安装 TensorFlow
如果您是机器学习的新手,那么让事情顺利进行的最简单方法是打开 Colab Notebook。 只需访问 https://colab.research.google.com/ 并单击“New Python 3 Notebook”。
确保内核在右上角显示“已连接”。 好消息,TensorFlow 已预装在 Google Colab 中。
瞧! 你都准备好了。
要检查您是否使用了正确的版本,请运行以下代码段。
将张量流导入为 tf tf.__版本__ |
它应该说任何高于 2.0.0 的版本,你很高兴。
TensorFlow 中的图像分类器
现在让我们回顾一下深度学习问题的“Hello World”——MNIST 数据集。
我们将构建一个简短的神经网络来预测 MNIST 数据集。 我们将按照以下步骤进行。
- 构建一个对图像进行分类的神经网络。
- 训练神经网络。
- 评估模型的准确性
导入 TensorFlow。
将张量流导入为 tf |
加载 MNIST 数据。
mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() |
通过堆叠层构建一个 tf.keras.Sequential 模型。
我们需要为模型训练选择一个优化器和一个损失函数。
模型 = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, 激活='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10) ]) |
定义稀疏分类交叉熵损失函数。
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True) |
编译模型。
model.compile(optimizer='adam', 损失=损失_fn, 指标=['准确性']) |
用 5 个 epoch 训练模型。
model.fit(x_train, y_train, epochs=5) |
评估模型。
model.evaluate(x_test, y_test, 详细=2) |
313/313 – 0s – 损失:0.0825 – 准确度:0.9753 [0.082541823387146, 0.9753000140190125] |
图像分类器现在在这个数据集上被训练到大约 98% 的准确率。
在你走之前
TensorFlow 2 专注于简单性和易用性,包括即时执行、直观的高级 API 和在任何平台上灵活的模型构建等更新。

TensorFlow 是当今任何深度学习任务的首选库/工具。 另一个最常用和流行的库是 Facebook 的 PyTorch。
TensorFlow 的扩展生态系统使其成为您开始深度学习之旅的好地方。 它易于理解,更重要的是易于实施。
最好的起点是用户友好的 Sequential API。 您可以通过将构建块插入在一起来创建模型。 了解有关深度学习技术的更多信息。
结论
因此,既然您已经详细了解了所有主要的深度学习框架,您就可以做出明智的决定并选择最适合您项目的框架。
如果您有兴趣了解有关深度学习和人工智能的更多信息,请查看我们的机器学习和人工智能 PG 文凭课程,该课程专为在职专业人士设计,并提供 30 多个案例研究和作业、25 多个行业指导课程、5 多个实践手- 顶石项目,超过 450 小时的严格培训和顶级公司的就业帮助。