导语:
本文主要介绍了关于Python高级架构模式的整理的相关知识,希望可以帮到处于编程学习途中的小伙伴
1、残差连接是目前常用的组件,解决了大规模深度学习模型的梯度消失和瓶颈问题。
通常,在超过 10 层的模型中附加残差连接可能会有所帮助。
from keras import layers
x = ...
y = layers.Conv2D(128, 3, activation='relu', padding='same')(x)
y = layers.Conv2D(128, 3, activation='relu', padding='same')(y)
y = layers.MaxPooling2D(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轻,训练快,精度高。
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras import layers
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.MaxPooling2D(2))
model.add(layers.SeparableConv2D(64, 3, activation='relu'))
model.add(layers.SeparableConv2D(128, 3, activation='relu'))
model.add(layers.MaxPooling2D(2))
model.add(layers.SeparableConv2D(64, 3, activation='relu'))
model.add(layers.SeparableConv2D(128, 3, activation='relu'))
model.add(layers.GlobalAveragePooling2D())
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(num_classes, activation='softmax'))
model.compile(optimizer='rmsprop', loss='categorical_crossentropy')
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何在python中删除文件09/02
- ♥ 大意,这几道Python面试题没答对,Python面试题精选12/05
- ♥ Python文件的相关操作12/20
- ♥ python3 不是内部命令09/28
- ♥ python中capitalize的三种转换操作01/02
- ♥ python3不包装输出10/11
内容反馈