1. 程式人生 > 程式設計 >Tensorflow tf.tile()的用法例項分析

Tensorflow tf.tile()的用法例項分析

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))

Tensorflow tf.tile()的用法例項分析

補充知識: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()的用法例項分析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。