• 技术文章 >Python技术 >Python基础教程

    Python高级架构模式的整理

    小妮浅浅小妮浅浅2021-09-09 09:39:05原创2241

    1、残差连接是目前常用的组件,解决了大规模深度学习模型梯度消失和瓶颈问题。

    通常,在10层以上的模型中追加残差连接可能有帮助。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    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、标准化用于使模型看到的不同样本更相似,有助于模型的优化和泛化。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    # 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')

    以上就是Python高级架构模式的整理,希望对大家有所帮助。更多Python学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python架构模式
    上一篇:Python方差特征过滤的实现 下一篇:python超参数如何优化

    相关文章推荐

    • python操作文件模式的介绍• Python with as如何使用• Python如何从列表中获取笛卡尔积• python如何检测pygame中的碰撞• python Selenium如何等待元素出现• Python中cProfile分析工具的使用• Python如何列出目录中的所有文件• Python中filecmp模块的介绍• Python中Tf-idf文本特征的提取• Python数据归一化如何理解• Python数据标准化是什么• Python特征降维如何理解• Python方差特征过滤的实现

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网