如何在 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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.