用tensorflow实现神经网络中的超列

用tensorflow实现神经网络中的超列,tensorflow,conv-neural-network,Tensorflow,Conv Neural Network,我试图在我的神经网络模型中加入这个想法。如何使用tensorflow实现这一点?下面是一个基本示例 定义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(conv

我试图在我的神经网络模型中加入这个想法。如何使用tensorflow实现这一点?

下面是一个基本示例

定义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]))

谢谢@Steven!还有,我有没有办法执行普通卷积,并保留最后一层卷积像素/值的超列?例如,如果输入是244x244,卷积的最终输出是7x7,那么只需将每个前一层的7x7值保持相等的间隔,然后将它们连接起来?我可能需要你更具体地说明你想要做什么。因此,超列的概念比输入图像大小甚至列的大小更为普遍。例如:假设输入大小如您所说的244x244x3(3个颜色通道),第一层变为一半,因此122x122x16下一层(和最后一层)为7x7x65。现在最简单的方法是执行tf.image.resize_双线性(layer1,(224224,224))和第二层相同的操作,但不需要这样做。你也可以线性化这两个层,并以这种方式连接它们(但是这样会丢失空间信息)。你也可以看看tensorflow中的去冷却(听起来像你想要的),尽管目前仍在开发中。你可以在这里看谢谢你的指导。我不希望像超专栏文章那样进行精确的(像素级)分割。我想看看,不是在输入层为每个像素保留超列,而是在最后一层为每个像素保留超列,如果这样做,精度和速度之间的权衡是什么,由于输入图像大小的超列张量很大,并且需要相对较多的计算时间。如果只保留层n-1和层n的先前表示,则确实可以提高精度,但需要更多的计算和空间。准确度很难衡量,因为这是特定于任务的(因此在某些情况下,您可能根本不需要进行实验来提高)。计算时间非常容易,因为你可以计算一个深度为n和n+1的卷积所需的时间,空间也很容易计算,因为你可以乘以float(或double)*(大小层n+层n+1)。