1. 程式人生 > WINDOWS開發 >Keras函式式API介紹

Keras函式式API介紹

參考文獻:Géron,Aurélien. Hands-On Machine Learning with Scikit-Learn,Keras,and TensorFlow: Concepts,Tools,and Techniques to Build Intelligent Systems. O‘Reilly Media,2019.

Keras的Sequential順序模型可以快速搭建簡易的神經網路,同時Keras也提供函式式API(Functional API)用於定製各種不同型別的網格結構。

Concatenate

在搭建Wide & Deep神經網格的時候,需要進行層融合(concatenation)。圖中的融合層將Input層和hidden layer最後一層相加在一起。
技術分享圖片

input_ = keras.layers.Input(shape=X_train.shape[1:])
hidden1 = keras.layers.Dense(30,activation="relu")(input_)
hidden2 = keras.layers.Dense(30,activation="relu")(hidden1)
concat = keras.layers.concatenate([input_,hidden2])
output = keras.layers.Dense(1)(concat)
model = keras.models.Model(inputs=[input_],outputs=[output])

Multi-inputs

可以將輸入特徵先分成多組(可以有重疊部分),讓它們分別通過神經網路中的不同路徑。
技術分享圖片

input_A = keras.layers.Input(shape=[5],name="wide_input")
input_B = keras.layers.Input(shape=[6],name="deep_input")
hidden1 = keras.layers.Dense(30,activation="relu")(input_B)
hidden2 = keras.layers.Dense(30,activation="relu")(hidden1)
concat = keras.layers.concatenate([input_A,hidden2])
output = keras.layers.Dense(1,name="output")(concat)
model = keras.models.Model(inputs=[input_A,input_B],outputs=[output])

Multi-outputs

技術分享圖片

input_A = keras.layers.Input(shape=[5],name="main_output")(concat)
aux_output = keras.layers.Dense(1,name="aux_output")(hidden2)
model = keras.models.Model(inputs=[input_A,outputs=[output,aux_output])

每個output可以單獨設定損失函式

model.compile(loss=[“mse”,”mse”],loss_weights=[0.9,0.1],optimizer=“sgd”)

如果不設定的話,Keras預設使用相同的損失函式。訓練中,Keras會單獨計算兩個損失函式,相加一起得到作為最後的損失值。