tensorflow高階總結

2021-10-21 19:59:12 字數 4316 閱讀 3907

tf.concat(

[a,b]

,axis=n)

#拼接:不會會產生新的維度

'''e.g.:

a.shape = [4,32,8]

b.shape = [6,32,8]

axis = 0

=> concat.shape = [10,32,8]

'''#約束:非拼接維度之間必須保持一致,否則拼接不合法。

tf.stack(

[a,b]

,axis=n)

#堆疊:產生新的維度

'''e.g.:

a.shape = [32,8]

b.shape = [32,8]

axis = 0

=> stack.shape = [2,32,8]

'''#約束:所有待合併的shape完全一致,否則非法。

tf.split(x,num_or_size_splits,axis)

#分割:將乙個張量拆分為多個張量

''' x -> 待分割張量

num_or_size_splits -> 切割方案:為單個數值時:表示切割為等長的n份。當為list時:表示每份的長度

axis -> 分割的維度索引號

''''''

e.g.:

a.shape = [10,20,30]

return = tf.split(a,num_or_size_splits=10,axis=0)

return為len為10 的張量列表

return[0].shape = [1,20,30] 注意:切割後任然並保留了維度(維度為1)

'''#特別的,如果希望某個維度全部分割的長度都為1:tf.unstack(x,axis),但被切割的維度會消失,如[20,30]。

#範數:具體的計算請自查

tf.norm(x,

ord= n)

#n =1/2/np.inf,分別代表1範數 2範數 無窮範數

#最值、均值、和

#可計算某個維度的,也可計算全域性的

tf.reduce_max(a,axis = n)

tf.reduce_min(a,axis = n)

'''e.g.:

a.shape = [4,10]

retuen = tf.reduce_max(a,axis = 2)

return.shape = [4,]

'''#當不指定axis時,會計算全域性的元素對應的資料

tf.reduce

.mean(a,axis = n)

#均值tf.

reduce

.sum

(a,axis = n)

#求和tf,argmax(a , axis = n)

#最大值索引號

tf,argmin(a , axis = n)

#最小值索引號

#tip: tf.nn.softmax(out,axis=n)輸出轉化為概率

#兩張量是否一致

tf.equal(x,y)

#返回布林值型別的張量:每個元素一一對應

#填充(padding)一般為了保持兩張量維度一致,進行一些無意義的填充,填充0,

tf.padding(b,padding)

#padding引數包含多個巢狀方案的list,如[[0,0],[1,1],[1,2]]表示在第一維度不填充,第二維左側填充1個單元,在第二維度右側填充1個單元,在第三個維度左側填充1個單元,右側填充2個單元

'''e.g.:

a = [1,2,3,4,5,6]

b = [1,2,3,4]

return = tf.padding(b,[[0,2]])

return = [1,2,3,4,0,0]

'''#一般用於自然語言處理,對於不同單詞數的句子,對他們的張量長度進行統一,然後進行堆疊操作。

#也可用在填充當中

tf.maximum(x,2)

#x在[2,+inf)區間上

tf.minimum(x,0)

#(-inf,0]

tf.minimum(tf.maximum(x,2)

,7)#[2,7]

#更方便的

tf.clip_by_value(x,2,

7)#[2,7]

tf.gather(x,

[a,b]

,axis = n)

#根據索引號取出資料

#表示在維度為n上取出a到b上的資料(維度從1開始,實際上axis從0開始)

'''e.g.:

a.shape = [4,5,6]

r = tf.gather(a,[0,1],axis = 0)

r.shape = [2,5,6]

'''#事實上切片也可以實現,不過較為麻煩,gather適合索引號沒有規則的場景

tf.gather.nd(x,[[

],,]

)#通過指定座標,同時取樣多個點並且進行堆疊操作

tf.boolean_mask(a,mask,axis)

#通過指定維度,以掩碼的方式取樣資料

'''e.g.:

a.shape = [4,32,8]

r = tf.boolean_mask(a,mask=[true,false,false,true],axis=0)

r.shape = [2,32,8]

'''#注意:掩碼長度必須與對應的維度長度一致

#掩碼方式與gather_nd方式可以相互轉換

tf.where(cond,a,b)

#根據條件cond的真假,conda=true -> a , conda=false - > b

#當a,b不指定時,函式返回cond張量中所有為true的元素的索引座標

tf.where(cond)

tf.scatter_nd(indices,updates,shape)

#將資料update按照索引indices的位置,重新整理到形如shape的白板中

indices = tf.constant([[

4],[

3],[

1],[

7]])

updates = tf.constant(

[4.4

,3.3

,1.1

,5.5])

r = tf.scatter_nd(indices,updates,[8

])out : r.numpy(

)= array([0

.,1.1,0.

,3.3

,4.4,0

.,0.

,5.5

])

tf.linespace(star,end,num)

#在(star--end)區間內等間隔的生成num個數字,注意這裡的star和end必須是浮點型

tf.meshgrid(a,b)

#通過a的資料點,和b的資料點,返回a*b個資料點的張量[a,b,2],並切割為2個張量[a,b]、[a,b]

#功能就是 根據a和b生成網格點,用於繪製3d檢視,視覺化。

'''e.g.:

a = tf.linspace(-8,8,100)

b = tf.linspace(-8,8,100)

print(a.shape,b.shape)

out: (100,)

x,y = tf.meshgrid(a,b)

print(x.shape,y.shape)

out: (100, 100) (100, 100)

'''

dataset.shuffle(buffer_size)可將dataset物件隨機打散資料順序。buffer_size表緩衝池,一般乙個較大的常數。

***.batch(size)批訓練,數量為size

***.map(func) 預處理,自定義func函式,傳入即可。

for step,(x,y) in enumerate(train_db)

for x,y in train_db

TensorFlow函式使用總結

tf學習中,經常看到tensor.eval這樣的用法。tensor.eval 的意義和sess.run 一樣,t.eval 等效於sess.run t 但是二者也有些微區別,run可以同時執行多個tensor,比如 t tf.constant 11.0 u tf.constant 37.0 tu t...

Tensorflow卷積介面總結

這個介面用了這麼久,每次都有點迷惑,這裡做下總結。filter 卷積核引數,shape為 kernel height,kernel width,in channels,out channels 第三維與input的第四維對應,第四維決定了卷積核的個數 stride 步長,一維向量,4個值,其中 0 ...

TensorFlow實現高階的卷積神經網路

本人使用的資料集是cifar 10。這是乙個經典的資料集,許多 也都是在這個資料集上進行訓練。使用的卷積神經網路是根據alex描述的cuda convnet模型修改得來。在這個神經網路中,我使用了一些新的技巧 1 對weights進行了l2的正則化 2 將影象進行翻轉 隨機剪下等資料增強,製造了更多...