TensorFlow2.0:数据的填充与复制

**

一 tf.pad( )填充函数

**

tf.pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0): 

paddings参数的设置方法:

假设输入tensor有两个维度,则paddings参数设置为paddings = [[a,b],[c,d]]
a,b表示为axis=0维度上最前面填充a行,最后面填充b行,
c,d表示为axis=1维度上最前面填充c列,最后面填充d列,

同理,假设输入的tensor有三个维度,则paddings参数设置为paddings = [[a,b],[c,d],[e,f]]
a,b表示为axis=0维度上最前面填充a行,最后面填充b行,
c,d表示为axis=1维度上最前面填充c列,最后面填充d列,
e,f表示为axis=2维度上最前面填充e,最后面填充f,


In [3]: a                                                                       
Out[3]: 

In [4]: a = tf.reshape(a,[3,3])                                                 

In [5]: a                                                                       
Out[5]: 


In [6]: tf.pad(a,[[0,0],[0,0]])#不填充                                          
Out[6]: 


In [7]: tf.pad(a,[[1,0],[0,0]])#在axis=0上最前面填充1行,得到的维度应为[4,3]     
Out[7]: 


In [8]: tf.pad(a,[[0,1],[0,0]])#在axis=0的最后面填充1行                         
Out[8]: 


In [9]: tf.pad(a,[[0,0],[1,0]])#在axis=1的最前面填充1列                         
Out[9]: 


In [10]: tf.pad(a,[[0,0],[0,1]])#在axis=1的最后面填充1列                        
Out[10]: 


In [11]: tf.pad(a,[[1,1],[0,0]])#在axis=0最前面和最后面分别填充                 
Out[11]: 


In [12]: tf.pad(a,[[0,0],[1,1]])#在axis=1最前和最后各填充                       
Out[12]: 


In [13]: tf.pad(a,[[1,1],[1,1]])#在axis=0和axis=1的最前和最后各进行填充         
Out[13]: 


iamge padding

tf.pad(tensor, paddings, mode="CONSTANT", name=None, constant_values=0): 

In [19]: tf.pad(a,[[0,0],[2,2],[2,2],[2,2],[0,0]],constant_values=255).shape                                                                                                                                
Out[19]: TensorShape([4, 32, 32, 32, 3])

**

二 tf.tile( ) 数据复制函数

**

    tf.tile(  
        input,     #输入  
        multiples,  #某一维度上复制的次数  
        name=None  
    )

multiples参数设置方法:

假设输入Input有两个维度,则可以设置multiples = [a,b]
a表示在维度axis=0上复制a次,
b表示在维度axis=1上复制b次.

同理,假设Input有三个维度,则可以设置multiples = [a,b,c]
a表示在维度axis=0上复制a次,
b表示在维度axis=1上复制b次.
c表示在维度axis=2上复制c次,

In [2]: a = tf.range(9)               
                                                                                                                                                                      
In [3]: a                                                                                                                                                                                                   
Out[3]: 

In [4]: a = tf.reshape(a,[3,3])                                                                                                                                                                             

In [5]: a                                                                                                                                                                                                   
Out[5]: 


In [6]: tf.tile(a,[1,1])#表示不复制                                                                                                                                                                         
Out[6]: 


In [7]: tf.tile(a,[1,2])#在axis=1维度上复制2次                                                                                                                                                              
Out[7]: 


In [8]: tf.tile(a,[2,2])#在axis=0和axis=1维度上分别复制2,次,先复制小维度,再复制大维度                                                                                                                                                  
Out[8]: 


In [9]: tf.tile(a,[2,1])#在axis=0维度上复制2次                                                                                                                                                              
Out[9]: 


tile VS broadcast_to
broadcast_to相当于先expand_dims,再tile

In [12]: a = tf.reshape(tf.range(9),[3,3])                                                                                                                                                                  

In [13]: a                                                                                                                                                                                                  
Out[13]: 


In [14]: aa = tf.expand_dims(a,axis=0)#先扩充维度                                                                                                                                                           

In [15]: aa                                                                                                                                                                                                 
Out[15]: 


In [16]: bb = tf.tile(aa,[2,1,1])                                                                                                                                                                           

In [17]: bb                                                                                                                                                                                                 
Out[17]: 


In [18]: cc = tf.broadcast_to(a,[2,3,3])                                                                                                                                                                    

In [19]: cc                                                                                                                                                                                                 
Out[19]: 


你可能感兴趣的:(tensorflow2.0)