内容简介:Francois Chollet在他的“用Python深度学习”一书中概述了用Keras分4步开发神经网络的过程。 让我们用一个简单的例子来看一下这个过程。Francois Chollet在他的“深度学习Python”一书中概述了与Keras开发神经网络的概述。 通过本书前面的一个简单的MNIST示例,Chollet将网络构建过程简化为与Keras直接相关的4个主要步骤。
Francois Chollet在他的“用 Python 深度学习”一书中概述了用Keras分4步开发神经网络的过程。 让我们用一个简单的例子来看一下这个过程。
Francois Chollet在他的“深度学习Python”一书中概述了与Keras开发神经网络的概述。 通过本书前面的一个简单的MNIST示例,Chollet将网络构建过程简化为与Keras直接相关的4个主要步骤。
这不是机器学习工作流程,也不是用深度学习解决问题的完整框架。 这4个步骤仅适用于整体神经网络机器学习工作流程中Keras发挥作用的部分。 这些步骤如下:
- 定义训练数据
- 定义神经网络模型
- 配置学习过程
- 训练模型
虽然Chollet然后花了他的书的其余部分充分说明了使用它的必要细节,让我们通过一个例子初步看看工作流程。
1.定义训练数据
第一步很简单:您必须定义输入和目标张量。 更加困难的数据相关方面 - 不属于Keras特定的工作流程 - 实际上是查找或策划,然后清理和预处理某些数据,这是任何机器学习任务的关注点。 这是模型的一个步骤,通常不涉及调整模型超参数。
虽然我们的设计示例随机生成一些要使用的数据,但它捕获了此步骤的单一方面:定义输入(X_train)和目标(y_train)张量。
# Define the training data import numpy as np X_train = np.random.random((5000, 32)) y_train = np.random.random((5000, 5))
Keras有两种定义神经网络的方法:Sequential模型类和Functional API。两者都有共同定义神经网络的目标,但采取不同的方法。
Sequential类用于定义网络层的线性堆栈,然后共同构成模型。在下面的示例中,我们将使用Sequential构造函数创建一个模型,然后使用add()方法将图层添加到其中。
创建模型的另一种方法是通过Functional API。与Sequential模型限定仅由线性堆栈中的层构成的网络相反,Functional API提供了更复杂模型所需的灵活性。这种复杂性最好地体现在多输入模型,多输出模型和类图模型的定义的用例中。
我们的示例中的代码使用Sequential类。它首先调用构造函数,然后调用add()方法将图层添加到模型中。第一个这样的调用添加了一个Dense类型的层(“只是你的常规密集连接的NN层”)。 Dense图层的输出大小为16,输入大小为INPUT_DIM,在我们的例子中为32(请查看上面的代码片段进行确认)。请注意,只有模型的第一层需要明确说明输入维度;以下层能够从先前的线性堆叠层推断出。按照标准做法,整流线性单元激活函数用于该层。
下一行代码定义了我们模型的下一个Dense层。请注意,此处未指定输入大小。但是,指定输出大小为5,这与我们的多类别分类问题中的假定类别数量相匹配(请再次检查上面的代码片段以确认)。由于这是我们用网络解决的多类分类问题,因此该层的激活功能设置为softmax。
# Define the neural network model from keras import models from keras import layers INPUT_DIM = X_train.shape[1] model = models.Sequential() model.add(layers.Dense(16, activation='relu', input_dim=INPUT_DIM)) model.add(layers.Dense(5, activation='softmax'))
通过这几行,我们定义了Keras模型。 Sequential类的summary()方法提供了对我们模型的以下见解:
3.配置学习过程
通过定义训练数据和定义模型,可以配置学习过程。 这是通过调用Sequential模型类的compile()方法完成的。 编译需要3个参数:优化器,损失函数和度量列表。
在我们的示例中,设置为多类分类问题,我们将使用Adam优化器,分类的交叉熵损失函数,并且仅包括准确度度量。
# Configure the learning process from keras import optimizers from keras import metrics model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
通过使用这些参数调用compile(),我们的模型现在已经配置了学习过程。
4.训练模型
此时,我们有训练数据和完全配置的神经网络来训练所述数据。 剩下的就是将数据传递给模型以便开始训练过程,这个过程通过迭代训练数据来完成。 通过调用fit()方法开始训练。
fit()至少需要2个参数:输入和目标张量。 如果没有提供更多内容,则会执行一次训练数据迭代,这通常对您没有任何好处。 因此,在实际的最小范围内,更常规的是定义一对附加参数:batch_size和epochs。 我们的例子包括这4个参数。
请注意,epoch精度并不是特别令人钦佩,这对于使用的随机数据是有意义的。
希望通过使用库作者规定并在此概述的简单的4步骤流程,可以解释Keras用于解决普通旧分类问题的方式。
附录:完整代码
import numpy as np from keras import models from keras import layers from keras import optimizers from keras import metrics X_train = np.random.random((5000, 32)) y_train = np.random.random((5000, 5)) INPUT_DIM = X_train.shape[1] model = models.Sequential() model.add(layers.Dense(16, activation='relu', input_dim=INPUT_DIM)) model.add(layers.Dense(5, activation='softmax')) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(X_train, y_train, batch_size=128, epochs=10)
作者:Matthew Mayo 原文链接: https://www.kdnuggets.com/2018/06/keras-4-step-workflow.html
版权声明:作者保留权利,严禁修改,转载请注明原文链接。
数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习到有用知识。 平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。 您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。 我们努力坚持做原创,聚合和分享优质的省时的数据知识! 我们都是数据人,数据是有价值的,坚定不移地实现从数据到商业价值的转换!
以上所述就是小编给大家介绍的《Keras 四步工作流程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Out of Control
Kevin Kelly / Basic Books / 1995-4-14 / USD 22.95
Out of Control is a summary of what we know about self-sustaining systems, both living ones such as a tropical wetland, or an artificial one, such as a computer simulation of our planet. The last chap......一起来看看 《Out of Control》 这本书的介绍吧!