基础知识

不同的padding方式——以tf.pad()函数为例

2019-10-19  本文已影响0人  红豆汤来两大碗

转自:https://blog.csdn.net/sinat_29957455/article/details/80903913

1、函数功能介绍

tf.pad函数主要是用来对tensor的大小进行扩展,包括水平、垂直、深度(通道)等。
pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0)
输入参数:

2、 实例

paddings是一个大小为[n,2]的tensor,其中n为输入tensor的秩(维度)。

a、CONSTANT填充方式(默认)

import tensorflow as tf
import numpy as np
 
if __name__ == "__main__":
    a = np.array(np.arange(1,10))
    a = a.reshape((3,3))
    print(a)
    sess = tf.InteractiveSession()
    b = tf.pad(a,[[1,1],[2,2]])
    print(sess.run(b))

输出

[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[0 0 0 0 0 0 0]
 [0 0 1 2 3 0 0]
 [0 0 4 5 6 0 0]
 [0 0 7 8 9 0 0]
 [0 0 0 0 0 0 0]]

b、REFLECT填充方式

    b = tf.pad(a,[[1,1],[2,2]],"REFLECT")
    print(sess.run(b))

输出

[[6 5 4 5 6 5 4]
 [3 2 1 2 3 2 1]
 [6 5 4 5 6 5 4]
 [9 8 7 8 9 8 7]
 [6 5 4 5 6 5 4]]

注意: paddings中的参数填充函数,不能超过输入tensor在该方向上的shape-1,如上面的输入tensor的shape为(3,3),在使用REFLECT模式的时候,垂直方向和水平方向上都不能超过2。

另一种方法,未验证
nn.ReflectionPad2d()

input = torch.randn(64, 3, 220, 220) # input size
# 4-tuple
pad = nn.ReflectionPad2d((3, 3, 5, 5)) # laft, right, top, bottom
output = pad(input) # size(64, 3, 230, 226)
# int
pad = nn.ReflectionPad2d(3)
output = pad(input) # size(64, 3, 226, 226)

c、SYMMETRIC填充方式

    b = tf.pad(a,[[1,1],[2,2]],"SYMMETRIC")
    print(sess.run(b))

输出

[[2 1 1 2 3 3 2]
 [2 1 1 2 3 3 2]
 [5 4 4 5 6 6 5]
 [8 7 7 8 9 9 8]
 [8 7 7 8 9 9 8]]

d、扩展——三维padding:

    a = np.array(np.arange(1,9))
    a = a.reshape((2,2,2))
    print(a)
    sess = tf.InteractiveSession()
    b = tf.pad(a,[[1,1],[2,2],[3,3]],constant_values=0)
    print(sess.run(b))

输出

[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]
[[[0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]]
 
 [[0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 1 2 0 0 0]
  [0 0 0 3 4 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]]
 
 [[0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 5 6 0 0 0]
  [0 0 0 7 8 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]]
 
 [[0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]
  [0 0 0 0 0 0 0 0]]]

2019-10-09

上一篇 下一篇

猜你喜欢

热点阅读