8.4 KiB
Python 中的 Keras 深度学习[有例子]
原文:https://www.askpython.com/python/examples/keras-deep-learning
Keras 是一个强大且易于使用的 Python 开源深度学习库。它允许您轻松地建立和训练神经网络和深度学习模型。Keras 也是最受研究人员和开发人员欢迎的深度学习框架之一。Keras 由一个经验丰富的开发人员和贡献者团队开发和维护。Keras 也得到了大量用户和开发者社区的支持。
在本文中,我们将讨论以下主题:
- Keras 是什么?
- Keras 的特点
- Keras 贡献者
- Keras Models
- 如何使用 Keras?
- 还有更多…
所以让我们开始吧。
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 加速
- 安卓(TF,TF lite)
- iOS(原生 coreML)
- 树莓派
什么是 Keras 车型?
Kers 用于构建不同的机器学习模型。Keras 的模型也提供了一些简单的工作方法。基本上,我们也将讨论两种不同的 Keras 模型。
- 顺序模型
- 功能模型
1.顺序模型
Sequential Model
Keras 顺序 API 模型的特点
- 它的工作原理类似于线性层叠。
- 这对于创建示例模型非常有用,例如:
- 网络的简单分类
- 编码器-解码器模型
- 该模型将每一层视为一个对象,为同一模型中的下一层提供信息。
- 这个系统被称为顺序模型。
2.功能模型
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()
我们可以通过使用区间[0,1]将输入值从类型 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 框架及其不同的特性。虽然它主要是理论上的,我们希望你喜欢它。我们将带着更多激动人心的话题再次访问。


