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的值。