大家好,昨天介紹了Functional API,並且建立和前天用Sequential Model方法一樣的模型,雖然都是單輸入單輸出模型,但兩種的建立方法有些不同的地方,而今天要來介紹的是用Functional API建立多輸入單輸出、單輸入多輸出、多輸入多輸出模型。
首先一樣是匯入套件,和昨天一樣就不再寫一次了。
再來分別介紹三種模型的建立:
多輸入單輸出模型(Multi Input Model):
inputA=keras.Input(shape=(200,))
inputB=keras.Input(shape=(300,))
hA_1=layers.Dense(50)(inputA)
hA_2=layers.Dense(35)(hA_1)
hB_1=layers.Dense(40)(inputB)
concat=layers.Concatenate()([hA_2, hB_1])
h1=layers.Dense(20)(concat)
outputs=layers.Dense(10)(h1)
model=keras.Model(inputs=[inputA, inputB], outputs=outputs)
這個模型有inputA和inputB兩個輸入,經過隱藏層hA_2和hB_1後,用layers.Concatenate()將兩個層結合,最後有一個輸出層outputs。
單輸入多輸出模型(Multi Output Model):
inputs=keras.Input(shape=(1000,))
h1=layers.Dense(80)(inputs)
h2=layers.Dense(100)(h1)
hA_1=layers.Dense(60)(h2)
hA_2=layers.Dense(50)(hA_1)
hB_1=layers.Dense(70)(h2)
outputA=layers.Dense(10)(hA_2)
outputB=layers.Dense(5)(hB_1)
model=keras.Model(inputs=inputs, outputs=[outputA, outputB])
這個模型有一個輸入層inputs,經過隱藏層h2後,分為hA_1和hB_1兩層,最後的輸出則是outputA和outputB兩個。
多輸入多輸出模型(Multi Input and Output Model):
inputA=keras.Input(shape=(200,))
inputB=keras.Input(shape=(300,))
hA_1=layers.Dense(50)(inputA)
hA_2=layers.Dense(35)(hA_1)
hB_1=layers.Dense(40)(inputB)
concat=layers.Concatenate()([hA_2, hB_1])
outputA=layers.Dense(10)(concat)
outputB=layers.Dense(5)(concat)
outputC=layers.Dense(1)(concat)
model=keras.Model(inputs=[inputA, inputB], outputs=[outputA, outputB,outputC])
這個模型有inputA和inputB兩個輸入,經過隱藏層hA_2和hB_1後,用layers.Concatenate()將兩個層結合,最後的輸出則是outputA、outputB和outputC三個。
今天只是介紹模型如何建立,所以建立層的方法都寫得比較簡單,輸入和輸出也都是一維張量,之後應該會再介紹其他不同的層來建立模型。