深度学习(1) ——图像分类

  • 网络结构:

深度学习(1) ——图像分类

这里大量使用了1×1的卷积,主要作用是实现跨通道的语义信息融合和降维减少参数量。 实现:

class Inception(tf.keras.layers.Layer):

    def __init__(self, c1, c2, c3, c4):
        super().__init__()

        self.p1_1 = tf.keras.layers.Conv2D(
            c1, kernel_size=1, activation='relu', padding='same')

        self.p2_1 = tf.keras.layers.Conv2D(
            c2[0], kernel_size=1, padding='same', activation='relu')
        self.p2_2 = tf.keras.layers.Conv2D(c2[1], kernel_size=3, padding='same',
                                           activation='relu')

        self.p3_1 = tf.keras.layers.Conv2D(
            c3[0], kernel_size=1, padding='same', activation='relu')
        self.p3_2 = tf.keras.layers.Conv2D(c3[1], kernel_size=5, padding='same',
                                           activation='relu')

        self.p4_1 = tf.keras.layers.MaxPool2D(
            pool_size=3, padding='same', strides=1)
        self.p4_2 = tf.keras.layers.Conv2D(
            c4, kernel_size=1, padding='same', activation='relu')

    def call(self, x):

        p1 = self.p1_1(x)

        p2 = self.p2_2(self.p2_1(x))

        p3 = self.p3_2(self.p3_1(x))

        p4 = self.p4_2(self.p4_1(x))

        outputs = tf.concat([p1, p2, p3, p4], axis=-1)
        return outputs
  • GoogLeNet: 共分为5个模块:
  • B1模块:64个 7×7卷积层
  • B2模块:64个1×1卷积层 + 1个3×3卷积层+1个3×3池化层
  • B3模块:2个Inception模块 + 3×3最大池化
  • B4模块:5个Inception + 3×3最大池化,还有两个辅助输出类,防止网络太深过拟合
  • B5模块:2个Inception + GAP全局平均池化 + 全连接层输出分类结果

Original: https://blog.csdn.net/weixin_37935970/article/details/123883728
Author: 程序汪赵可乐
Title: 深度学习(1) ——图像分类

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/651794/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球