import tensorflow as tf

# 一、pad
a = tf.reshape(tf.range(9), [3,3])
print(a)

b = tf.pad(a, [[0,0], [0,0]]) # [ [0上行, 0下行]控制行, [0左列, 0右列]控制列 ]
print(b)

b = tf.pad(a, [[1,1], [2,2]]) # [ [0上行, 0下行]控制行, [0左列, 0右列]控制列 ]
print(b) # 上行填充1行，下行填充1行；左列填充2列，右列填充2列。

print("--------------------------------------------------------------------")

# 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)

print("====================================================================")

# 二、tile：复制
a = tf.random.normal([3,3], seed=1)
b = tf.tile(a, [1,2]) #  [1,2]复制次数，1：行复制1次；2：列复制2次
print(b)

print("====================================================================")

aa = tf.expand_dims(a, axis=0) # 添加维度
print(aa)

# 比较tile 和 broadcast的区别
print(tf.tile(aa, [2,1,1])) #  [2,1,1]复制次数，2：0轴复制1次；1：1轴不复制；1：2轴不复制

print(tf.broadcast_to(aa, [2,3,3])) # [2,3,3]广播维度，2：0轴扩充为2维；3：1轴维持不变；3：2轴维持不变
