好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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测试数据pile(optimizer='rmsprop',?loss='categorical_crossentropy')

以上就是Python高级架构模式的整理,希望对大家有所帮助。

查看更多关于Python高级架构模式的整理的详细内容...

  阅读:19次