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