这个问题不是关于跨越式卷积相对于最大池的好处。当输入图像的宽度和高度不相同,填充相同的时,如何计算条纹卷积和最大池的维数,这篇文章的目的是作为一个规范源。
我的研究:当图像宽度和高度不同时,填充是“相同的”,特别是对于tensorflow,我找不到合适的公式来计算卷积的输出。同样的问题仍然存在于跨越式卷积和最大池。
我知道这个帖子。但就像我之前说过的,它不适用于不同的图像大小。我也知道这个帖子。但是它不回答发生什么事,填充是相同的(在tensorflow中)。
但是,假设我有大小为240x320**.**的图像,而我有两个版本的网络。
A版:
from tensorflow import layers as tf
x = tf.conv2d(input_im, filters=64, kernel_size=3, strides=1, padding='SAME')
x = tf.conv2d(x, filters=64, kernel_size=3, strides=1, padding='SAME')
x = tf.conv2d(x, filters=64, kernel_size=3, strides=2, padding='SAME')B版:
from tensorflow import layers as tf
x = tf.conv2d(input_im, filters=64, kernel_size=3, strides=1, padding='SAME')
x = tf.conv2d(x, filters=64, kernel_size=3, strides=2, padding='SAME')
x = tf.max_pooling(x, 2, 2, padding='SAME')我的问题如下。在A和B版本的每个层之后,,给定上述输入图像大小,输出维是多少?如果我在Keras中这样做,我只会使用model.summary();但是,我使用的是tensorflow,没有类似的函数。我无法在我正在工作的远程机器上运行张紧板。
发布于 2019-08-08 01:03:22
您可以通过以下方式获得产生的张量的形状。
import tensorflow as tf
input_im = tf.placeholder(tf.float32, shape=[None, 320, 240, 3])
x = tf.layers.conv2d(input_im, filters=64, kernel_size=3, strides=1, padding='SAME')
print('After conv1', x.shape)
x = tf.layers.conv2d(x, filters=64, kernel_size=3, strides=1, padding='SAME')
print('After conv2', x.shape)
x = tf.layers.conv2d(x, filters=64, kernel_size=3, strides=2, padding='SAME')
print('After conv3', x.shape)https://stackoverflow.com/questions/57403919
复制相似问题