10、张量的填充和复制

时间:2019-11-26
本文章向大家介绍10、张量的填充和复制,主要包括10、张量的填充和复制使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  • 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]]

原文地址:https://www.cnblogs.com/pengzhonglian/p/11935971.html