tf.pad函数功能介绍
tf.pad()函數(shù)主要是對(duì)張量在各個(gè)維度上進(jìn)行填充,該函數(shù)的參數(shù)如下所示:
pad(tensor,paddings,mode='CONSTANT',name=None )其中:
tensor是待填充的張量
paddings指出要給tensor的哪個(gè)維度進(jìn)行填充,以及填充方式,要注意的是paddings的rank必須和tensor的rank相同
mode指出用什么進(jìn)行填充,’CONSTANT’表示用0進(jìn)行填充(總共有三種填充方式,本文用CONSTANT予以說明pad函數(shù)功能)
name就是這個(gè)節(jié)點(diǎn)的名字了
二維張量(向量)
測(cè)試代碼如下:
# 創(chuàng)建一個(gè)二維變量,默認(rèn)執(zhí)行CONSTANT填充 vct = tf.Variable(tf.ones([3, 4]), name="vct") # 指定填充方式, pad1 = np.array([[1, 2], [3, 4]]) # tf.pad進(jìn)行填充 vct_pad1 = tf.pad(vct, pad1, name='pad_1') # 創(chuàng)建會(huì)話 with tf.Session() as sess:sess.run(tf.global_variables_initializer())print(sess.run(vct))print(sess.run(vct_pad1))運(yùn)行結(jié)果如下:
上圖是 print(sess.run(vct))的執(zhí)行結(jié)果,創(chuàng)建了一個(gè)3行4列的二維矩陣
上圖是print(sess.run(vct_pad1)的執(zhí)行結(jié)果,由圖可得:
????(1) tensor的維度是n,則pad就有n行,因?yàn)閜ad的每一行負(fù)責(zé)對(duì)tensor的某一個(gè)維度進(jìn)行填充.
????(2) 在二維中,pad的第一行對(duì)tensor的行進(jìn)行填充,[1, 2]中的第一個(gè)元素表示在tensor上面填充1行,第二個(gè)元素表示在tensor下面填充2行.
????(3) 在二維中,pad的第二行對(duì)tensor的列進(jìn)行填充,[3, 4]中的第一個(gè)元素表示在tensor左邊填充3列,第二個(gè)元素表示在tensor右邊填充4列.
修改一下pad中的數(shù)字,再看一下效果,體會(huì)一下.
張量(三維)
????測(cè)試代碼如下:
tsr = tf.Variable(tf.ones([2, 3, 4]), name="tsr") pad2 = np.array([[0, 0], [1, 2], [3, 4]]) tsr_pad2 = tf.pad(tsr, pad2, name='pad_2')with tf.Session() as sess:sess.run(tf.global_variables_initializer())print(sess.run(tsr))print(sess.run(tsr_pad2))運(yùn)行結(jié)果如下
上圖所示的是print(sess.run(tsr))的運(yùn)行結(jié)果,我定義了一個(gè)張量維度是[2,3,4],從結(jié)果直觀理解是,輸出講這個(gè)張量處理成了2個(gè)向量(3行4列).
上圖所示是print(sess.run(tsr_pad2))的運(yùn)行結(jié)果,[0,0]表示tensor的第一個(gè)維度不填充,后面的跟二維張量填充一樣.*
接下來只對(duì)tensor的第一維進(jìn)行填充,看下效果,仍舊是上面的代碼,只是吧pad2那一行改為:
pad2 = np.array([[1, 1], [0, 0], [0, 0]])運(yùn)行結(jié)果如下:
很明顯,在原來基礎(chǔ)上上下各填充了一個(gè)全零二維數(shù)組,此時(shí)tsr的維度變成[4,3,4].
?
參考博客‘:https://blog.csdn.net/yy_diego/article/details/81563160
總結(jié)
以上是生活随笔為你收集整理的tf.pad函数功能介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input.get_shape()的用法
- 下一篇: tf.reshape(inputs, [