📜  如何在 Keras 中创建模型?

📅  最后修改于: 2022-05-13 01:54:44.748000             🧑  作者: Mango

如何在 Keras 中创建模型?

Keras 是一个开源 API,用于解决各种现代机器学习和深度学习问题。它使用户能够更多地关注深度学习的逻辑方面,而不是粗暴的编码方面。 Keras 是一个极其强大的 API,通过减少用户的工作量来提供卓越的可扩展性、灵活性和认知便利性。它是用Python编写的,并使用 TensorFlow 或 Theano 作为其后端。

Keras 中的模型

Keras 中的一个典型模型是多个训练和推理层的聚合。使用 Keras 创建模型有两种广泛的方法。

函数式 API

功能 API 处理具有多种功能的非线性模型。这些模型具有极强的可扩展性和灵活性。您可以指定从输入开始一直到输出的神经网络的前向传递,以创建个性化模型。它提供了一种弹性架构,其中成对的层可以以任何方式连接到多个层。函数式 API 可以说是一种构建层图和 ad-hoc 非循环网络图的方法。这可以帮助用户非常轻松地定制复杂的网络,例如连体网络。使用功能 API 创建模型是此处定义的多步骤过程。

1.) 定义输入

使用功能 API 创建 Keras 模型的第一步是定义输入层。输入层接受实际上是一个元组的形状参数。这用于定义输入的维度。

Python3
# defining Input
from keras.layers import Input
visible = Input(shape=(10,))


Python3
# connecting layers
from keras.layers import Input
from keras.layers import Dense
visible = Input(shape=(10,))
# now connecting hidden layer to visible input layer
hidden = Dense(2)(visible)


Python3
#import all required modules
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense
visible = Input(shape=(10,))
hidden = Dense(2)(visible)
model = Model(inputs=visible, outputs=hidden)


Python3
model = keras.Sequential(
    [
        layers.Dense(2, activation="relu"),
        layers.Dense(3, activation="relu"),
        layers.Dense(4),
    ]
)


Python3
model = keras.Sequential()
model.add(layers.Dense(2, activation="relu"))
model.add(layers.Dense(3, activation="relu"))
model.add(layers.Dense(4))


上述一维输入的最后一个维度总是悬空,以补偿在分割数据以进行训练、测试和验证时使用的小批量大小的形状。因此,“逗号”之后的空缺。

2.) 连接层

在我们创建了输入层之后,我们现在将创建一个密集的隐藏层。这个隐藏层应该连接到我们的输入层并从它接收输入。

Python3

# connecting layers
from keras.layers import Input
from keras.layers import Dense
visible = Input(shape=(10,))
# now connecting hidden layer to visible input layer
hidden = Dense(2)(visible)

这就是隐藏层连接到可见输入层的方式。 Dense层用于将一层神经元的输出作为输入传递到另一层神经元。

请注意,在这种情况下,由于个人需求,只有一层的输入会被传递到输出层。然而,功能模型允许将多个输入输入神经网络以获取多个输出。由于可以轻松建立连接,功能模型非常流行。您现在可以根据需要添加任意数量的图层。

3.) 创建你的模型

现在可以使用 Model 类以最简单的方式创建所需的模型。只需要定义输入和输出层。

Python3

#import all required modules
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense
visible = Input(shape=(10,))
hidden = Dense(2)(visible)
model = Model(inputs=visible, outputs=hidden)

现在创建模型,输入为可见层,输出为隐藏层。这就是功能 API 帮助用户轻松创建神经网络模型的方式。

顺序 API

Sequential API 是用于建模更简单的神经网络的稍微不那么精细的 API。网络中的每一层只接受一个输入并传递一个输出。需要注意的是,当模型需要多个输入或输出或需要共享层时,顺序模型不起作用。顺序模型只能在具有线性拓扑的网络中使用。

创建顺序模型

让我们创建一个具有三层的顺序模型。完成所有导入后,我们首先创建图层。

Python3

model = keras.Sequential(
    [
        layers.Dense(2, activation="relu"),
        layers.Dense(3, activation="relu"),
        layers.Dense(4),
    ]
)

这就是我们创建三层模型的方式。在这种情况下使用的激活函数是“ReLu”,或整流线性激活单元。传递给 Dense 的整数参数表示每层中的神经元数量。

请注意, add()方法也可用于将层添加到模型中。

Python3

model = keras.Sequential()
model.add(layers.Dense(2, activation="relu"))
model.add(layers.Dense(3, activation="relu"))
model.add(layers.Dense(4))

参考

  1. https://keras.io/guides/sequential_model/
  2. https://machinelearningmastery.com/keras-functional-api-deep-learning/