您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 为什么在tensorflow中构建resnet模型时使用固定填充

5b51 2022/1/14 8:21:35 python 字数 3291 阅读 511 来源 www.jb51.cc/python

Tensorflow在github中正式实现了resnet.它使用固定填充而不是普通的tf.layers.conv2d.像这样的东西:def conv2d_fixed_padding(inputs, filters, kernel_size, strides, data_format): '''Strided 2-D convolution with e

概述

Tensorflow在github中正式实现了resnet.它使用固定填充而不是普通的tf.layers.conv2d.

像这样的东西:

def conv2d_fixed_padding(inputs,filters,kernel_size,strides,data_format):
  """Strided 2-D convolution with explicit padding."""
  # The padding is consistent and is based only on `kernel_size`,not on the
  # dimensions of `inputs` (as opposed to using `tf.layers.conv2d` alone).
  if strides > 1:
    inputs = fixed_padding(inputs,data_format)

  return tf.layers.conv2d(
      inputs=inputs,filters=filters,kernel_size=kernel_size,strides=strides,padding=('SAME' if strides == 1 else 'VALID'),use_bias=False,kernel_initializer=tf.variance_scaling_initializer(),data_format=data_format)

这样做的目的是什么?如果我们输入一个大小为32×32的图像并使用tf.layer.conv2d设置填充方法到SAME,我们可以得到一个16×16的特征映射,步长为2.但在上面的代码中,它将在图像的两侧填充零,然后使用填充方法VALID.

使用带填充的tf.layers.conv2d相同:

情况1:

                   pad|              |pad
       inputs:      0 |1  2  3  4  5 |0 
                   |_______|
                         |_______|
                               |_______|

案例2:

                                     |pad
       inputs:      1  2  3  4  5  6 |0 
                   |_______|
                         |_______|
                               |_______|

您可以看到填充将取决于输入大小.确定具有相同的填充,使得输出大小为Math.ceil(input_size / stride).您可以阅读有关该here的更多信息.

使用resnet的固定填充实现:

情况1:

                   pad|              |pad
       inputs:      0 |1  2  3  4  5 |0 
                   |_______|
                         |_______|
                               |_______|

案例2:

                   pad|                 |pad
       inputs:      0 |1  2  3  4  5  6 |0 
                   |_______|
                         |_______|
                               |_______|

填充由内核大小唯一定义,并且与输入大小无关.

总结

以上是编程之家为你收集整理的python – 为什么在tensorflow中构建resnet模型时使用固定填充全部内容,希望文章能够帮你解决python – 为什么在tensorflow中构建resnet模型时使用固定填充所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶