定義多重輸入模型
有些情況下,Sequential API 的彈性不夠,無法滿足你想要的模型架構,此時就需要改用 Functional API。比方說,你想同時訓練兩個架構不同的模型,就得用 Functional API 來完成。本練習將示範如何做到,並使用 .summary() 方法檢視合併後模型的架構。
注意:keras 已經從 tensorflow 匯入。另外,第一個與第二個模型的輸入層分別已定義為 m1_inputs 與 m2_inputs。兩個模型的架構相同,但其中一個在第一層使用 sigmoid 活化函式,另一個使用 relu。
本練習屬於課程
Python 的 TensorFlow 入門
練習說明
- 將模型 1 的輸入層傳給其第一層,並將模型 1 的第一層傳給其第二層。
- 將模型 2 的輸入層傳給其第一層,並將模型 2 的第一層傳給其第二層。
- 使用
add()將模型 1 與模型 2 的第二層合併。 - 完成 Functional 模型的定義。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# For model 1, pass the input layer to layer 1 and layer 1 to layer 2
m1_layer1 = keras.layers.Dense(12, activation='sigmoid')(____)
m1_layer2 = keras.layers.Dense(4, activation='softmax')(____)
# For model 2, pass the input layer to layer 1 and layer 1 to layer 2
m2_layer1 = keras.layers.Dense(12, activation='relu')(____)
m2_layer2 = keras.layers.Dense(4, activation='softmax')(____)
# Merge model outputs and define a functional model
merged = keras.layers.add([m1_layer2, ____])
model = keras.Model(inputs=[____, m2_inputs], outputs=____)
# Print a model summary
print(model.summary())