我在深度网络中使用1x1卷积来将特征x:Bx2CxHxW缩小为BxCxHxW。我有三个选择:x->转化(1x1)-> Batchnorm-> ReLU。代码为output = ReLU(BN(Conv(x)))。参考resnetx-> BN-> ReLU->转化因此,代码将为output = Conv(ReLU(BN(x)))。参考densenetx->转化代码是output = Conv(x)哪一个最适合用于特征缩减?为什么? 最佳答案 由于您将要端对端训练网络,因此无论使用哪种配置,都将训练砝码以适应它们。BatchNorm?我想您需要问自己的第一个问题是您要使用BatchNorm吗?如果您的网络很深,并且您担心covariate shifts,那么您可能应该使用BatchNorm-选项no。 3BatchNorm首先?如果您的x是另一个conv层的输出,那么第一个和第二个替代之间实际上没有区别:您的网络是...- conv-bn-ReLU--conv-BN-ReLU -...所以它只是将网络分为功能conv,conv,bn的三元组的“人为”划分以及最后一个功能,您可以随意分割内容。而且,由于Batch范数是线性运算(比例+偏差),因此可以将其“折叠”到相邻的relu层中而无需更改网络,因此基本上只剩下conv-conv对。因此,您突出显示的前两个选项之间并没有太大的区别。还有什么要考虑的?更改要素尺寸时,您真的需要relu吗?您可以将缩减维视为线性映射-将映射到ReLU的权重分解为一个较低等级的矩阵,该矩阵最终映射到x维度空间而不是c空间。如果考虑线性映射,则可能完全省略2c。有关示例,请参见fast RCNN SVD trick。关于tensorflow - 转换1x1配置以减少功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53919836/
10-09 03:05