1、残差连接是解决大规模深度学习模型梯度消失和瓶颈问题的常用组件。
通常,在10层以上的模型中添加残差连接是有帮助的。
fromkerasimportlayers x=... y=layers.Conv2D(128,3,activation='relu',padding='same')(x) y=layers.Conv2D(128,3,activation='relu',padding='same')(y) y=layers.Maxpoling2D(2,strides=2)(y) #不同形状的线性变换: residual=layers.Conv2D(128,1,strides=2,padding='same')(x)#使用1×1卷积,x线下采样与y形状相同 y=layers.add([y,residual])
2、标准化用于使模型看到的不同样本更加相似,有助于模型的优化和泛化。
#Conv conv_model.add(layers.Conv2D(32,3,activation='relu')) conv_model.add(layers.BatchNormalization()) #Dense dense_model.add(layers.Dense(32,activation='relu')) dense_model.add(layers.BatchNormalization()) 3、卷积层在Keras中被称为SeparableConv2D,其功能与普通Conv2D相同。 但SeparableConv2D比Conv2D轻,训练快,精度高。 fromtensorflow.keras.modelsimportSequential,Model fromtensorflow.kerasimportlayers height=64 width=64 channels=3 num_classes=10 model=Sequential() model.add(layers.Separableconv2D(32,3, activation='relu', input_shape=(height,width,channels,))) model.add(layers.Separableconv2D(64,3,activation='relu')) model.add(layers.Maxpoling2D(2)) model.add(layers.Separableconv2D(64,3,activation='relu')) model.add(layers.Separableconv2D(128,3,activation='relu')) model.add(layers.Maxpoling2D(2)) model.add(layers.Separableconv2D(64,3,activation='relu')) model.add(layers.Separableconv2D(128,3,activation='relu')) model.add(layers.GlobalaveragepolingD()) model.add(layers.Dense(32,activation='relu')) model.add(layers.Dense(num_classes,activation='softmax')) model.compile(optimizer='rmsprop',loss='categorical_crossentropy')
以上是Python高级架构模式的整理,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。