函数式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()方法肯定模型训练流程并训练便可。