函數式API相比於keras.Sequential()具備更加靈活多變的特色。網絡
函數式API主要應用於多輸入多輸出的網絡模型。函數
利用函數式API構建神經網絡主要分爲3步,1.構建輸入層,2.構建中間層與輸出層並鏈接神經層,3.生成神經網絡模型。spa
輸入層的構建較爲簡單,調用keras.Input()方法來構建輸入層。code
1 input = keras.Input(shape = (28, 28))
shape參數是輸入數據的形狀(這裏輸入的是一個28*28的二維數據)。blog
上一篇博客中有提到過,輸出層與中間層的差異主要在於激活函數/分類器的選用上,其餘部分大體相同,因此這裏放在一塊兒講。input
函數式API是把神經網絡層做爲函數相互調用以達到鏈接神經層變成神經網絡的目的。博客
能夠在構建神經層的時候直接鏈接,其結構與Sequential模型類似。it
1 x = keras.layers.Flatten()(input) #調用函數式API 2 x = keras.layers.Dense(32, activation = "relu")(x) 3 x = keras.layers.Dropout(0.5)(x) 4 x = keras.layers.Dense(64, activation = "relu")(x) 5 output = keras.layers.Dense(10, activation = "softmax")(x)
或者是先構建神經層,再按照本身須要的順序相連。io
1 a = keras.layers.Flatten()(input) 2 b = keras.layers.Dense(32, activation = "relu") 3 b = b(a) 4 c = keras.layers.Dropout(0.5) 5 c = z(b) 6 d = keras.layers.Dense(64, activation = "relu") 7 d = d(c) 8 output = keras.layers.Dense(10, activation = "softmax") 9 output = output(d)
不難看出,使用函數式API相對繁瑣,可是能看出它的靈活性遠高於Sequential模型。class
使用keras.Model()方法生成網絡模型
1 model = keras.Model(inputs = input, outputs = output)
參數分別是神經網絡的輸入和輸出層。
最後使用.compile()方法和.fit()方法肯定模型訓練流程並訓練便可。