geekdoc-python-zh/docs/askpython/keras-deep-learning.md

8.4 KiB
Raw Permalink Blame History

Python 中的 Keras 深度学习[有例子]

原文:https://www.askpython.com/python/examples/keras-deep-learning

Keras 是一个强大且易于使用的 Python 开源深度学习库。它允许您轻松地建立和训练神经网络和深度学习模型。Keras 也是最受研究人员和开发人员欢迎的深度学习框架之一。Keras 由一个经验丰富的开发人员和贡献者团队开发和维护。Keras 也得到了大量用户和开发者社区的支持。

在本文中,我们将讨论以下主题:

  1. Keras 是什么?
  2. Keras 的特点
  3. Keras 贡献者
  4. Keras Models
  5. 如何使用 Keras
  6. 还有更多…

所以让我们开始吧。

Keras 是什么?

Keras 是一个非常流行的深度学习框架,是一个运行在 TensorFlow、Theano 或 CNTK 之上的神经网络 API。

Keras 的主要特点

Keras 是一个用于创建深度学习模型的开源库。它是用 Python 编写的,可以运行在 TensorFlow、微软 CNTK 或 Theano 之上。Keras 是一个高级 API允许开发人员轻松创建深度学习模型。Keras 由世界各地的贡献者积极开发,并在行业中被广泛采用。

Keras 是一个高性能的 API允许轻松创建不同的程序。它专注于用户体验在行业中被广泛采用。Keras 提供快速原型制作,并在 CPU 和 GPU 上无缝运行。它支持 NVIDeA 和 AMD。Keras 允许自由设计任何架构并且易于上手。Keras 还为模型提供了简单的制作方法。

Keras 的贡献者

在最初阶段Keras 有将近 48 个以上的贡献者。

现在是近 25 万开发者或贡献者。每年都以 2 倍的速度增长。负责 Keras 框架开发的一些顶级公司有微软、谷歌、英伟达和 AWS。一些使用 Keras 框架的流行平台有网飞、优步、谷歌、Instamert 和华为。

Keras 上的用户体验

  • 用户友好的 API
    • Keras 是为人类设计的 API。
    • 它遵循最佳实践来减少认知负荷。
    • 它遵循一致性和简单的 API。
  • 不是为机器设计的
    • Keras 对用户造成的任何错误提供了明确的反馈。
    • 这最大限度地减少了常见用例所需的用户操作数量。
  • 易学易用
    • 它是非常多产的。
    • 它提供了比你想象的更多的想法。
    • 这有助于持续获胜,并为赢得比赛提供最佳支持。
  • 高灵活性
    • 它通过集成其他深度学习语言,如 TensorFlow 和 Theranos为所有开发人员提供了更高的灵活性。
    • 你可以用 basic 语言实现任何东西。

多后端和多平台战略

Keras 提供了多后端以及多平台的工作策略,这样代码就可以聚集在一起完成相同的任务。

  • 我们可以用 python 和 R 开发 Keras。
  • 我们可以使用以下后端引擎运行代码:
    • TensorFlow
    • 提亚诺
  • 它提供了将网络计算部署到多个 CPU 和 GPU 服务器的灵活性。
  • 它使用以下方式生成模型:
    • TF-服务
    • GPU 加速
    • 安卓(TFTF lite)
    • iOS(原生 coreML)
    • 树莓派

什么是 Keras 车型?

Kers 用于构建不同的机器学习模型。Keras 的模型也提供了一些简单的工作方法。基本上,我们也将讨论两种不同的 Keras 模型。

  • 顺序模型
  • 功能模型

1.顺序模型

Sequential Model

Sequential Model

Keras 顺序 API 模型的特点

  • 它的工作原理类似于线性层叠。
  • 这对于创建示例模型非常有用,例如:
    • 网络的简单分类
    • 编码器-解码器模型
  • 该模型将每一层视为一个对象,为同一模型中的下一层提供信息。
  • 这个系统被称为顺序模型。

2.功能模型

Functional Model

Functional Model

功能 API 模型的特点

  • 该模型具有多输入、多输出和任意静态图拓扑。
  • 它提供了复杂的模型,这些模型可以分成两个或更多的分支或共享层。
  • 功能域中使用的概念称为域适应。

在 Keras API 框架中执行

对于在 Keras API 框架中创建的模型,可能有两种不同类型的执行,如下:

  • 符号执行
    • 在这种类型的执行中,我们首先构建一个计算图。
    • 然后编译好的图就在后面执行了。
    • 它在 python 代码中有价值。
  • 急切(迫切)执行
    • 在这种类型的执行过程中python 运行时就是执行运行时。
    • 这类似于用 NumPy 执行。
    • 它在 python 代码中没有值。
    • 对于急切执行,可以使用值相关的动态拓扑(树形 rnn)。

使用 Keras 的实例

我们将学习如何使用 Keras API然后是一个示例程序。跟随代码片段。首先让我们在命令提示符下使用 Pip 安装程序安装 Keras 库。

#installing keras using pip installer
pip install keras

   Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
   Requirement already satisfied: keras in /usr/local/lib/python3.7/dist-packages (2.9.0)

在我们的示例程序中我们将加载一个预加载的数据集Keras API 的 MNIST 数据集 ,并使用 Keras 方法打印它。然后,我们将使用 Keras 实用程序对数据集中的输入数据进行规范化。

Keras API 中提供的一些其他预加载数据集是波士顿住房数据集、cifar 10(10 个图像标签的分类)数据集和 IMDB 电影评论数据集。MNIST 数据集是 Keras API 中预加载的数据集。

在我们获取的数据集中,有 10 条数据。我们不是处理所有的数据,而是只取两个数据并打印出来,然后处理它们。它可以通过下面的代码获得。

from keras.datasets import mnist
#loading datas in variables
(x_train, y_train), (x_test, y_test) = mnist.load_data()

#we will print 1st two datas from the dataset using the following code
from matplotlib import pyplot
for i in range(2):  
 pyplot.imshow(x_train[i], cmap=pyplot.get_cmap('gray'))
 pyplot.show()

我们可以通过使用区间[01]将输入值从类型 unit8 缩放到 float32 来规范化数据集中的数据。这将允许任何值的概率落在 0 到 1 的范围内。

x_train = x_train.astype(float32)
x_test = x_test.astype(float32)
x_train /= 255
x_test /= 255

由于我们要将数据从二维数组缩放到单个向量,我们需要使用以下代码片段将 28*28 数组的 MNIST 数据集的每个图像转换为具有 784(28 * 28 = 784)个分量的向量:

x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784) 

对于我们数据集中的每个图像,对应于该图像有一个介于 0 和 9 之间的级别。我们需要用一个包含 10 个位置的向量来表示这些信息,在对应于表示图像的数字的位置用 1 表示,在所有其他位置用 0 表示。我们可以使用keras.util中的 to _ categorical()方法来实现这一点。

from keras.utils import to_categorical

y_train = to_categorical(y_train, num_classes=10)
y_test = to_categorical(y_test, num_classes=10)

#Now printing our final normalized data from our datasets

print(y_test[4])
print(y_train[5])
print(y_train.shape)
print(y_test.shape)

因此,我们得到了数据集中数据(图像)的归一化值。我们在最后一行中打印了同样的内容,得到的输出如下。

[[0\. 0\. 0\. ... 1\. 0\. 0.]
 [0\. 0\. 1\. ... 0\. 0\. 0.]
 [0\. 1\. 0\. ... 0\. 0\. 0.]
 ...
 [0\. 0\. 0\. ... 0\. 0\. 0.]
 [0\. 0\. 0\. ... 0\. 0\. 0.]
 [0\. 0\. 0\. ... 0\. 0\. 0.]]
[[0\. 0\. 0\. ... 0\. 0\. 0.]
 [1\. 0\. 0\. ... 0\. 0\. 0.]
 [0\. 0\. 0\. ... 0\. 0\. 0.]
 ...
 [0\. 0\. 0\. ... 0\. 0\. 0.]
 [0\. 0\. 0\. ... 0\. 0\. 0.]
 [0\. 0\. 0\. ... 0\. 1\. 0.]]
(60000, 10)
(10000, 10)

通过这种方式,我们在 Keras 数据框中使用了预加载的数据集,并对数据集中的所有输入数据(影像)进行了归一化处理。

结论

今天我们学习了 Keras API 框架及其不同的特性。虽然它主要是理论上的,我们希望你喜欢它。我们将带着更多激动人心的话题再次访问。