Closed ghost closed 5 years ago
模型中使用 ReLU6 作为非线性层,在低精度计算时能压缩动态范围,算法更稳健。 ReLU6 定义为:f(x) = min(max(x, 0), 6),详见 tf.nn.relu6 API 手册[1]。
本文最难理解的其实是Linear Bottlenecks,论文中用很多公式表达这个思想,但是实现上非常简单,就是在MobileNetV2微结构中第二个PW后无ReLU6。对于低维空间而言,进行线性映射会保存特征,而非线性映射会破坏特征。
Depthwise Separable Convolution
可以看到MobileNetV2 和ResNet基本结构很相似。不过ResNet是先降维(0.25倍)、提特征、再升维。而MobileNetV2 则是先升维(6倍)、提特征、再降维。