使用 TensorFlow 2.0 进行深度学习:您需要知道的一切

已发表: 2021-01-05

TensorFlow 是 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)
b = tf.constant(2)
c = tf.add(a, b)
打印(c)

运行上面的代码不会给你想要的输出,即 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 数据集。 我们将按照以下步骤进行。

  1. 构建一个对图像进行分类的神经网络。
  2. 训练神经网络。
  3. 评估模型的准确性

导入 TensorFlow。

将张量流导入为 tf

加载 MNIST 数据。

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

通过堆叠层构建一个 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 小时的严格培训和顶级公司的就业帮助。

为未来的职业做准备

机器学习和人工智能的 PG 文凭
了解更多