轻量级卷积神经网络:SqueezeNet与ShuffleNet v1解析
1. SqueezeNet分类器
SqueezeNet的分类器与传统分类器有所不同。传统分类器通常采用全局平均池化层(GlobalAveragingPooling2D)后接一个全连接层(Dense),全连接层的输出节点数等于类别数。而SqueezeNet使用卷积层,卷积层的滤波器数量等于类别数,然后再接全局平均池化层。这种设计将每个先前的滤波器(类别)缩减为单个值,全局平均池化层的输出再通过softmax激活函数,得到所有类别的概率分布。
传统分类器中,最终特征图在瓶颈层通过全局平均池化层降维并展平为低维向量,每个特征图变为一个像素的一维向量(嵌入),该一维向量再传入全连接层进行分类。而在SqueezeNet中,最终特征图通过1×1线性投影,将其投影到与输出类别数相等的新集合中,投影后的特征图每个对应一个类别,再将每个特征图缩减为单个像素并展平,形成长度等于输出类别数的一维向量,最后通过softmax进行预测。
以下是SqueezeNet分类器的示例实现:
def classifier(x, n_classes):
''' Construct the Classifier
x : input to the classifier
n_classes: number of output classes
'''
x = Conv2D(n_classes, (1, 1), strides=1, activation='relu',
p
超级会员免费看
订阅专栏 解锁全文
1846

被折叠的 条评论
为什么被折叠?



