tensorflow中的矩陣生成與變換函數


tensorflow中常用的矩陣生成與變換函數如下:

 

1. 矩陣生成

tf.ones | tf.zeros

用法:tf.ones(shape,type=tf.float32,name=None) 

   tf.zeros(shape,type=tf.int32,name=None) 

說明:生成全0/全1矩陣

 

tf.ones_like | tf.zeros_like:

用法:tf.ones_like(tensor,dype=None,name=None) 
   tf.zeros_like(tensor,dype=None,name=None) 

說明:生成與給定的tensor類型大小一致的tensor,其所有元素為1或0

 

tf.fill

用法:tf.fill(shape,value,name=None) 

說明:創建一個形狀大小為shape的tensor,初始值為value

 

tf.constant

用法:tf.constant(value,dtype=None,shape=None,name=’Const’) 
說明:創建一個常量tensor,按照給出value來賦值,可以用shape來指定其形狀。value可以是一個數,也可以是一個list。 
如果是一個數,那么這個常量中所有值的按該數來賦值。 
如果是list,那么len(value)一定要小於等於shape展開后的長度。賦值時,先將value中的值逐個存入。不夠的部分,則全部存入value的最后一個值。

 

tf.random_normal | tf.truncated_normal | tf.random_uniform

用法:tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None) 
   tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) 
   tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32,seed=None,name=None) 
說明:這幾個都是用於生成隨機數tensor的。尺寸是shape 
random_normal: 正太分布隨機數,均值mean,標准差stddev 
truncated_normal:截斷正態分布隨機數,均值mean,標准差stddev,不過只保留[mean-2*stddev,mean+2*stddev]范圍內的隨機數 
random_uniform:均勻分布隨機數,范圍為[minval,maxval]

 

2. 矩陣變換

tf.shape

用法:tf.shape(Tensor) 
說明:返回張量的形狀。但是注意,tf.shape函數本身也是返回一個張量。而在tf中,張量是需要用sess.run(Tensor)來得到具體的值的

 
        

tf.expand_dims

用法:tf.expand_dims(Tensor, dim) 
說明:為張量+1維。

 

tf.sparse_to_dense

def sparse_to_dense(sparse_indices, output_shape, sparse_values, default_value=0, validate_indices=True, name=None):

說明:稀疏矩陣轉密集矩陣 

sparse_indices: 元素的坐標[[0,0],[1,2]] 表示(0,0),和(1,2)處有值 
output_shape: 得到的密集矩陣的shape 
sparse_values: sparse_indices坐標表示的點的值,可以是0D或者1D張量。若0D,則所有稀疏值都一樣。若是1D,則len(sparse_values)應該等於len(sparse_indices) 
default_values: 缺省點的默認值

 

tf.random_shuffle

tf.random_shuffle(value,seed=None,name=None) 
沿着value的第一維進行隨機重新排列

 

tf.equal

tf.equal(x, y, name=None): 
判斷兩個tensor是否每個元素都相等。返回一個格式為bool的tensor

 

tf.cast

cast(x, dtype, name=None) 
將x的數據格式轉化成dtype.例如,原來x的數據格式是bool,那么將其轉化成float以后,就能夠將其轉化成0和1的序列。反之也可以

 

tf.matmul

用來做矩陣乘法。若a為l*m的矩陣,b為m*n的矩陣,那么通過tf.matmul(a,b) 結果就會得到一個l*n的矩陣 
不過這個函數還提供了很多額外的功能。

 

tf.reshape

reshape(tensor, shape, name=None) 
顧名思義,就是將tensor按照新的shape重新排列。一般來說,shape有三種用法: 
如果 shape=[-1], 表示要將tensor展開成一個list 
如果 shape=[a,b,c,…] 其中每個a,b,c,..均>0,那么就是常規用法 
如果 shape=[a,-1,c,…] 此時b=-1,a,c,..依然>0。這表示tf會根據tensor的原尺寸,自動計算b的值。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM