- 网络结构:
这里大量使用了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/
转载文章受原作者版权保护。转载请注明原作者出处!