- pad 填充
- tile 复制
- broadcast_to
1、pad
(1)[[A,B],[C,D]]最外层括号表示要进行填充的维度,A表示在左边填充的单元个数,B表示在右边填充的单元个数,C表示在上面填充的单元个数,D表示在下面填充的单元个数,默认都是用0进行填充。
1 a = tf.reshape(tf.range(9),[3,3]) 2 b1 = tf.pad(a,[[0,0],[0,0]]) 3 b2 = tf.pad(a,[[1,0],[0,0]]) 4 b3 = tf.pad(a,[[1,1],[0,0]]) 5 b4 = tf.pad(a,[[1,1],[1,0]]) 6 b5 = tf.pad(a,[[1,1],[1,1]]) 7 8 print("\na:\n",a.numpy(),"\n\nb1:[[0,0],[0,0]]不填充\n",b1.numpy(),"\n\nb2:[[1,0],[0,0]]上面填充\n",b2.numpy(),"\n\nb3:[[1,1],[0,0]]上下填充\n",b3.numpy(),\
"\n\nb4:[[1,1],[1,0]]上下左填充\n",b4.numpy(),"\n\nb5:[[1,1],[1,1]]上下左右填充\n",b5.numpy())
输出:
a: [[0 1 2] [3 4 5] [6 7 8]] b1:[[0,0],[0,0]]不填充 [[0 1 2] [3 4 5] [6 7 8]] b2:[[1,0],[0,0]]上面填充 [[0 0 0] [0 1 2] [3 4 5] [6 7 8]] b3:[[1,1],[0,0]]上下填充 [[0 0 0] [0 1 2] [3 4 5] [6 7 8] [0 0 0]] b4:[[1,1],[1,0]]上下左填充 [[0 0 0 0] [0 0 1 2] [0 3 4 5] [0 6 7 8] [0 0 0 0]] b5:[[1,1],[1,1]]上下左右填充 [[0 0 0 0 0] [0 0 1 2 0] [0 3 4 5 0] [0 6 7 8 0] [0 0 0 0 0]]
(2)image padding
#在相对应维度进行填充
a = tf.random.normal([4,28,28,3]) b = tf.pad(a,[[0,0],[2,2],[2,2],[0,0]]) print(b.shape) #(4, 32, 32, 3)
2、tile 复制
1 a = tf.reshape(tf.range(9),[3,3]) 2 b = tf.tile(a,[1,2]) 3 print(a.numpy(),"\n\n",b.numpy())
输出:
#对a复制1行,2列
[[0 1 2] [3 4 5] [6 7 8]] [[0 1 2 0 1 2] [3 4 5 3 4 5] [6 7 8 6 7 8]]