tensorflowのtf.pad使用

2175 ワード

(1)2次元,元のtの大きさは2 x 3であり,paddingsは2次元マトリクスでなければならず,その行数はtの次元と同じであることを理解できる.
(2)tの大きさは2 x 3で2次元なのでpaddingsの行数は2
(3)i=0,1に対してpaddings[i][0]はtをこの次元の前面に充填することを示し、paddings[i][1]はtをこの次元の背面に充填することを示す
(4)例えばi=0,paddings[0][0]=1,paddings[0][1]=1であれば,tの最初の次元に対して元の個数は2である.
(5)充填後の個数がpaddings[0][0]+2+paddings[0][1]=4になる
(6)はi=1,paddings[1][0]=2,paddings[1][1]=2,tの2次元に対して元の個数は3である.
(7)充填後の個数がpaddingsとなる[1][0]+2+paddings[1][1]=6
t = tf.constant([[1, 2, 3], [4, 5, 6]])
paddings = tf.constant([[1, 1,], [2, 2]])
# 'constant_values' is 0.
# rank of 't' is 2.
tf.pad(t, paddings, "CONSTANT")  # [[0, 0, 0, 0, 0, 0, 0],
                                 #  [0, 0, 1, 2, 3, 0, 0],
                                 #  [0, 0, 4, 5, 6, 0, 0],
                                 #  [0, 0, 0, 0, 0, 0, 0]]

tf.pad(t, paddings, "REFLECT")  # [[6, 5, 4, 5, 6, 5, 4],
                                #  [3, 2, 1, 2, 3, 2, 1],
                                #  [6, 5, 4, 5, 6, 5, 4],
                                #  [3, 2, 1, 2, 3, 2, 1]]

tf.pad(t, paddings, "SYMMETRIC")  # [[2, 1, 1, 2, 3, 3, 2],
                                  #  [2, 1, 1, 2, 3, 3, 2],
                                  #  [5, 4, 4, 5, 6, 6, 5],
                                  #  [5, 4, 4, 5, 6, 6, 5]]

(8)三次元から高次元まで,前述の説明を経て,このときよく理解できるはずである.
t = tf.ones([2,2,3]) # [bs,len,hs]
paddings = tf.constant([[1,2],[1,1],[2, 2]])
a = tf.pad(t, paddings, "CONSTANT")
print(a)

"""
    :
tf.Tensor(
[[[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. 1. 1. 0. 0.]
  [0. 0. 1. 1. 1. 0. 0.]
  [0. 0. 0. 0. 0. 0. 0.]]

 [[0. 0. 0. 0. 0. 0. 0.]
  [0. 0. 1. 1. 1. 0. 0.]
  [0. 0. 1. 1. 1. 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.]]], shape=(5, 4, 7), dtype=float32)

"""

(9)明らかに、次元ごとの個数の変化がはっきりしている~