2016-06-19 27 views

回答

1

这是一个基本的例子。

定义layer1,layer2,layer3等,然后在下面连接它们,现在你有你的超列。

conv1 = tf.nn.conv2d(image, weights, [1, 1, 1, 1], 'SAME') 
layer1 = tf.image.resize_bilinear(conv1, (224, 224)) 
... 
layer2 = tf.image.resize_bilinear(conv2, (224, 224)) 
... 
layer3 = tf.image.resize_bilinear(conv3, (224, 224)) 
return(tf.concat(0, [layer1, layer2,layer3])) 
+0

thanks @Steven!此外,有没有什么办法可以执行正常卷积并保留最后一层卷积的像素/值的超列?例如,如果输入是244x244,卷积的最终输出是7x7,那么只需保持距离每个先前层的7x7值相等的距离,然后连接它们? –

+0

我可能需要你对你想完成的事情做更具体的描述。 因此,超级列的概念比输入图像的大小甚至列的大小更普遍。 例如: 假设输入大小如您所说244x244x3(3个颜色通道) 第一层变为一半这样122x122x16 下一层(和最后一层)是7x7x65。 现在最简单的做法是做tf.image.resize_bilinear(layer1,(224,224))和第二层相同,但并不一定如此。你也可以线性化两个图层,并以这种方式连接它们(但是会丢失空间信息)。 – Steven

+0

您还可以看看张量流动中的解耦(听起来像您想要的),尽管此时它仍在开发中。你可以在这里观看https://github.com/tensorflow/tensorflow/issues/2169 – Steven