Tensorflow tf.tile()的用法例項分析
阿新 • • 發佈:2020-05-23
tf.tile()應用於需要張量擴充套件的場景,具體說來就是:
如果現有一個形狀如[width,height]的張量,需要得到一個基於原張量的,形狀如[batch_size,width,height]的張量,其中每一個batch的內容都和原張量一模一樣。tf.tile使用方法如:
tile( input,multiples,name=None )
import tensorflow as tf a = tf.constant([7,19]) a1 = tf.tile(a,multiples=[3]) #第一個維度擴充3遍 b = tf.constant([[4,5],[3,5]]) b1 = tf.tile(b,multiples=[2,3])#第一個維度擴充2遍,第二個維度擴充3遍 with tf.Session() as sess: print(sess.run(a)) print(sess.run(a1)) print(sess.run(b)) print(sess.run(b1))
補充知識:tf.tile() 和 tf.contrib.seq2seq.tile_batch()
簡單介紹這兩個函式的基本用法,以及區別. 以及在 BeamSearch 的時候用哪個?
# 將input的某一維度複製多少次,len(input.shape()) 等於 len(multiples) # tf.tile(input,name=None) t = tf.constant([[1,1,9],[2,2,[7,7,9]]) # 第一維度和第二維度都保持不變 z0 = tf.tile(t,multiples=[1,1]) # 第1維度不變,第二維度複製為2份 z1 = tf.tile(t,2]) # 第1維度複製為兩份,第二維度不變 z2 = tf.tile(t,1]) # tf.contrib.seq2seq.tile_batch(encoder_outputs,multiplier=self.beam_size) encoder_outputs = tf.constant([[[1,3,1],2]],[[2,4],2]]]) print(encoder_outputs.get_shape()) # (2,3) # 將batch內的每個樣本複製3次,tile_batch() 的第2個引數是一個 int 型別資料 z4 = tf.contrib.seq2seq.tile_batch(encoder_outputs,multiplier=3) with tf.Session() as sess: print(sess.run(z0)) print(sess.run(z1)) print(sess.run(z2)) 輸出: [[1 1 1 9] [2 2 2 9] [7 7 7 9]] [[1 1 1 9 1 1 1 9] [2 2 2 9 2 2 2 9] [7 7 7 9 7 7 7 9]] [[1 1 1 9] [2 2 2 9] [7 7 7 9] [1 1 1 9] [2 2 2 9] [7 7 7 9]] [[[1 3 1] [2 3 2]] [[1 3 1] [2 3 2]] [[1 3 1] [2 3 2]] [[2 3 4] [2 3 2]] [[2 3 4] [2 3 2]] [[2 3 4] [2 3 2]]]
以上這篇Tensorflow tf.tile()的用法例項分析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。