如何在 Keras 中创建模型?


在本文中,我们将学习如何在 Keras 中创建模型。

简介

Keras 是一个 Python 开源库,它提供构建人工神经网络模型的 API,具有极大的灵活性。Keras 中的建模可以使用函数式 API 或 Keras 顺序模型来完成。Keras 模块也可在流行的 TensorFlow 库中使用。

最新版本和安装

截至撰写本文时,Keras 的最新版本为 2.1.0。

可以使用 pip 从 PyPI 仓库安装 Keras。

Keras 用于建模的优势

  • 由于 Keras 提供了简单的 API,因此它可以快速实现。

  • Keras 灵活且健壮,为构建模型提供了简单和高级的工作流程。

  • 提供行业级的 API 用于构建健壮的模型。

  • 也可用于快速原型设计和研究工作。

Keras 模型有两种类型

1. Keras 顺序模型

顾名思义,Keras 顺序模型允许我们以顺序方式逐层构建模型。

这有助于创建仅限于单个输入和输出的模型。它用于构建简单的层。

示例代码片段,展示 Keras 顺序模型的用法。

from keras.models import Sequential from keras.layers import Dense model=Sequential() model.add(Dense(128,input_shape=(8,))) model.add(Dense(64)) model.add(Dense(32))

2. Keras 函数式 API

Keras 函数式 API 在创建模型方面提供了更大的灵活性。它可以帮助我们创建具有多个输入和输出的模型。层可以像在图中一样被添加和共享。

Keras 函数式 API 可以用作蓝图,图和节点可以在需要的地方使用。

Keras 函数式 API 示例 –

from keras.layers import Input, Dense,Concatenate from keras.models import Model import numpy as np # This returns a tensor inputs = Input(shape=(784,)) # a layer instance is callable on a tensor, and returns a tensor x = Dense(64, activation='relu')(inputs) x = Dense(64, activation='relu')(x) predictions = Dense(10, activation='softmax')(x) # This creates a model that includes # the Input layer and three Dense layers model = Model(inputs=inputs, outputs=predictions) model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) print(model.summary()) # Keras with muliple inputs input1 = Input(shape=(32,)) input2 = Input(shape=(64,)) x = Concatenate(axis=1)([input1, input2]) output = Dense(10, activation='softmax')(x) model10 = Model([input1, input2],output) print(model10.summary())

使用 TensorFlow API 的 Keras [函数式 API]

Keras 在 TensorFlow 中作为 tf.keras API 提供。函数式 API 主要围绕构建层的定向无环图 (DAG) 而构建。它是一个层图。

使用 tensorflow keras 和 mnist 模型的示例

import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers inputs = keras.Input(shape=(784,)) image_inputs = keras.Input(shape=(32, 32, 3)) dense_layer = layers.Dense(64, activation="relu") x = dense_layer(inputs) x = layers.Dense(64, activation="relu")(x) outputs = layers.Dense(10)(x) model = keras.Model(inputs=inputs, outputs=outputs, name="mnist") #TRAINING AND INFERENCE (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() x_train = x_train.reshape(60000, 784).astype("float32") / 255 x_test = x_test.reshape(10000, 784).astype("float32") / 255 model.compile( loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True), optimizer=keras.optimizers.RMSprop(), metrics=["accuracy"], ) history = model.fit(x_train, y_train, batch_size=32, epochs=10, validation_split=0.3) test_scores = model.evaluate(x_test, y_test, verbose=2) print("Test loss:", test_scores[0]) print("Test accuracy:", test_scores[1])

函数式 API 的优势

  • 在函数式 API 中,输入形状和数据类型使用 Input 预先创建。API 将对输入和数据类型的传递规范进行内部检查,并提出有用的建议。

  • 可以绘制图形,我们可以在图形中访问中间节点。例如

features_list = [layer.output for layer in vgg19.layers] feat_extraction_model = keras.Model(inputs=vgg19.input, outputs=features_list)
  • 函数式 API 是可序列化的,可以作为单个文件存储,因为它是一个数据结构。

函数式 API 的缺点

  • 由于函数式 API 将网络视为有向无环图,因此不支持动态架构。

结论

Keras 是一个强大的深度学习模型实现工具/库,由于其简单性和健壮性,它既适用于工业也适用于原型设计。顺序 API 有助于构建快速模型,而当需要更多控制时,函数式 API 就能派上用场。

更新于:2022年12月1日

214 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告