序列
序列模型是layer-by-layer的,它是最简单的定义模型的方法,但是有几个不足:
• 不能够共享某一层
• 不能有多个分支
• 不能有多个输入
这种结构的经典网络比如有:Lenet5,AlexNet,VGGNet
#导入必备包
import tensorflow as tf#开始定义模型
def shallownet_sequential(width,height,depth,classes):#channel last,用输入形状来初始化模型model = tf.keras.Sequential()inputshape=(height,width,depth)model.add(tf.keras.layers.Conv2D(32,(3,3),padding='same',input_shape=inputshape))model.add(tf.keras.layers.Activation("relu"))#softmaxmodel.add(tf.keras.layers.Flatten())model.add(tf.keras.layers.Dense(classes))model.add(tf.keras.layers.Activation("softmax"))return modelmodel = shallownet_sequential(28,28,3,10)
model.summary()
inputs=tf.random.normal((4,28,28,3))
outputs = model(inputs)
print(outputs. Shape)
函数式
函数式API有更强的功能
• 定义更复杂的模型
• 支持多输入多输出
• 可以定义模型分支&