微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TensorFlow 2 中的分组转换

如何解决TensorFlow 2 中的分组转换

TensorFlow2.x 是否支持 Group Convolution?
我看到很多帖子/博客/教程说TensorFlow不支持它,我也看到一些帖子说tf.keras.layers.DepthwiseConv2D相当于组卷积。但是,我注意到tf.keras.layers.Conv2d中有一个group参数,这是很多论文(例如ResNeXt论文)中描述的group卷积吗?还是我理解错了?
任何帮助和解释都会很棒!

编辑:组转换(第三个)和等效并行转换(前两个)的示例。 ResNeXt 论文中的示例

group conv

pytorch 中深度为 4 的 32 个组的 group conv,这意味着总输出通道为 128:
torch.nn.Conv2d(in_channels=128,out_channels=128,kernel_size=(3,3),groups=32)

更具体地说,输入通道为 i 的 n 个组和深度为 d 的组卷积将把 i 个输入通道分成 n 个大小相等的组,每组将是一个具有相同内核大小的普通卷积,步长为 i/ n 个通道作为输入,d 个通道作为输出。所有组的输出将连接到 n*d 个通道并作为输入传递到下一层。

解决方法

是的,tensorflow 确实通过 groups 参数直接支持 Group Conv。来自 TF2 官方文档中的 Conv2D arguments

groups:一个正整数,指定输入沿通道轴拆分的组数。每个组分别与过滤器/组过滤器进行卷积。输出是所有组结果沿通道轴的串联。输入通道和过滤器都必须可以被组整除。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。