1、Sequential按层顺序创建模型

  1. tf.keras.backend.clear_session()
  2. model = models.Sequential()
  3. model.add(layers.Embedding(MAX_WORDS,7,input_length=MAX_LEN))
  4. model.add(layers.Conv1D(filters = 64,kernel_size = 5,activation = "relu"))
  5. model.add(layers.MaxPool1D(2))
  6. model.add(layers.Conv1D(filters = 32,kernel_size = 3,activation = "relu"))
  7. model.add(layers.MaxPool1D(2))
  8. model.add(layers.Flatten())
  9. model.add(layers.Dense(1,activation = "sigmoid"))
  10. model.compile(optimizer='Nadam',
  11. loss='binary_crossentropy',
  12. metrics=['accuracy',"AUC"])
  13. model.summary()

2、函数式API创建任意结构模型

  1. inputs = keras.Input(shape=(28, 28))
  2. x = keras.layers.Flatten()(inputs)
  3. x = keras.layers.Dense(128, activation="relu")(x)
  4. x = keras.layers.Dropout(0.5)(x)
  5. x = keras.layers.Dense(128, activation="relu")(x)
  6. outputs = keras.layers.Dense(10, activation="softmax")(x)
  7. model = keras.Model(inputs=inputs, outputs=outputs)
  8. model.summary()

3、Model子类化创建自定义模型

4、总结

  • 对于顺序结构的模型,优先使用Sequential方法构建。
  • 如果模型有多输入或者多输出,或者模型需要共享权重,或者模型具有残差连接等非顺序结构,推荐使用函数式API进行创建。
  • 如果无特定必要,尽可能避免使用Model子类化的方式构建模型,这种方式提供了极大的灵活性,但也有更大的概率出错。