2.3.2 Keras背后的原理
Keras主要通过两种方式提供功能:顺序模型和API函数。
·顺序模型:这是一种使用Keras的方法,允许线性地(或按顺序地)堆栈层实例。在这种情况下,层实例的含义与第1章中讨论的含义相同。也就是说,一个层具有某种类型的输入、某种类型的行为或主要模型操作,以及某种类型的输出。
·API函数:这是深入定义更复杂模型的最佳方式,例如合并模型、具有多个输出的模型、具有多个共享层的模型,以及许多其他可能性。别担心,这些都是高级主题,在以后的章节中会讲得很清楚。API函数范例给了程序员更多的创新自由。
我们可以将顺序模型视为开始使用Keras的一种简单方法,而将API函数视为解决更复杂问题的一种方法。
还记得第1章中的浅层神经网络吗?下面就给出如何使用Keras中的顺序模型范式来建立模型的方法:
前两行代码分别导入Sequential模型、Dense层和Activation层。Dense层是一个完全连接的神经网络,而Activation层是调用一组丰富的激活函数的非常具体的方式,如前面例子中的ReLU和SoftMax(将在后面详细解释)。
或者,你也可以使用相同的模型,但是使用add()方法:
为神经模型编写代码的第二种方法看起来更线性,而第一种方法看起来更像Python的方式,使用项列表来完成此操作。这其实是一样的,你可能会对其中一种产生偏好。但是,请记住,前面的两个示例都使用了Keras顺序模型。
现在,为了方便比较,下面给出使用关于Keras的API函数范例编写完全相同的神经网络体系结构的代码:
如果你是一个有经验的程序员,就会注意到函数API风格允许更多的灵活性。它允许定义输入张量,在需要的情况下可以将它们用作模型不同部分的输入。但是,使用API函数需要假设你熟悉顺序模型。因此,在本书中,我们将从顺序模型开始学习,后面向更复杂的神经网络模型迈进时,我们将逐步使用API函数范例。
就像Keras一样,还有其他Python库和框架允许以相对较低的难度进行机器学习。在编写本书的时候,最流行的是Keras,第二流行的是PyTorch。