什么是"相同"和"有效"填充之间的区别tf.nn.max_pool的tensorflow?
在我看来,'VALID'意味着当我们做最大池时,边缘外没有零填充.
根据深度学习的卷积算法指南,它表示池操作符中没有填充,即只使用'VALID' tensorflow.但是什么是最大池的"相同"填充tensorflow?
我的问题:
我进行的一个简单的实验表明,在 Keras/TF 中的 conv2d 层中使用与在前面的零填充层中padding='SAME'使用不同。padding='VALID'
实验说明 - 如果您有兴趣进一步阅读:
我使用该onnx2keras包将我的 Pytorch 模型转换为 keras/TF。
当onnx2keras遇到 ONNX 模型中的卷积层时,它会将其转换为带填充的padding > 0Keras 层(即无填充!),前面是 Keras层。这非常有效,并且返回与 Pytorch 网络产生的输出相同的输出。Conv2DvalidZeroPadding2D
我仍然觉得奇怪的是它不简单地使用padding='SAME',因为大多数参考文献都说 Keras/TF 使用零填充,就像 Pytorch 一样。
尽管如此,我还是onnx2keras对其进行了修补并使其生成Conv2D层,padding='SAME'而不是'VALID'使用前面的零填充层进行填充的现有解决方案。这使得生成的模型返回的输出与具有零填充层的输出不同,当然也不同于我的 Pytorch 模型,在补丁之前它是相同的。