如何在Tensorflow中以有效的方式进行每通道分组卷积

时间:2017-11-14 05:15:16

标签: tensorflow convolution

我试图弄清楚如何在Tensorflow中以有效的方式进行每通道分组卷积(或者替代等效方法,我在这方面很新)

我想在g'频道群组中独立执行k个过滤器' (总共k * g)。

例如,假设我有一个张量(批量,宽度,高度,通道= 6)

我想在3个通道组[0,1],[2,3],[4,5]上独立执行k个卷积。这个输出应该是一个张量(批量,宽度,高度,6 * g * k),其中前三个通道对应于[0,1]组上的卷积,第三个通道是[2,3]小组等。

我通过手动切片组和内核然后重新连接来获得一些hacky方法。它似乎工作,但很丑,可能很慢?我看到有一个深度方式的卷积函数,但这似乎并没有我想要它...

这是我当前的实现(我离我的代码很远,但它基本上就是这样):

grp1 = relu(conv2d(in[:, :, :, :2], kernel[:, :, :2, :], [1, 1, 1, 1], padding='SAME'))
grp2 = relu(conv2d(in[:, :, :, 2:4], kernel[:, :, 2:4, :], [1, 1, 1, 1], padding='SAME'))
grp3 = relu(conv2d(in[:, :, :, 4:], kernel[:, :, 4:, :], [1, 1, 1, 1], padding='SAME'))

conv_1 = tf.concat(3, [grp1, grp2, grp3])

有关更多背景信息,我的数据是3对EO-IR注册图像。通道0是可见光谱强度,通道1是IR强度,通道2,3和4,5是相似的

0 个答案:

没有答案