ReLU6是在mobilenet网络中被提出来的,包括后面的swish(x sigmoid(x))也是用relu6近似实现的。
为什么采用ReLU6而非ReLU?
在移动端设备中,通常用低精度计算(float16),表示范围有限,而relu的范围是0到+inf,对于特别大的数,可能会超过低精度浮点数的表示范围,因此需要进行截断。实际上,ReLU后面的数字决定了需要保留多少比特才是最优解,在mobilenet中选择了将该截断值设置为6。
ReLU6和hard sigmoid的关系?
ReLU6进行简单变换,即可成为hard sigmoid:
ReLU6和swish的关系?
由于ReLU6可以转为hard sigmoid,因此可以代替swish中的sigmoid,用来近似swish: