TensorFlow中tf.tile()函数详解与tile_batch对比

半杯拿铁
半杯拿铁
发布时间:2026-10-13 | 4人浏览过
原创

本文详细解析TensorFlow中tf.tile()函数的用法,通过实例展示如何根据multiples参数扩展张量维度。同时对比tf.contrib.seq2seq.tile_batch()函数,说明两者在Batch维度复制上的差异,并探讨在Beam Search场景下的选择策略。

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

tf.tile()与tile_batch()对比

此外,还需了解tf.tile()与tf.contrib.seq2seq.tile_batch()的区别。

本节简要介绍这两个函数的基本用法及其差异,并分析在Beam Search(束搜索)场景中应如何选择使用。


# 将input的某一维度复制多少次, len(input.shape()) 等于 len(multiples)
# tf.tile(input, multiples, name=None)
t = tf.constant([[1, 1, 1, 9], [2, 2, 2, 9], [7, 7, 7, 9]])
# 第一维度和第二维度都保持不变
z0 = tf.tile(t, multiples=[1, 1])
# 第1维度不变, 第二维度复制为2份
z1 = tf.tile(t, multiples=[1, 2])
# 第1维度复制为两份, 第二维度不变
z2 = tf.tile(t, multiples=[2, 1])
# tf.contrib.seq2seq.tile_batch(encoder_outputs, multiplier=self.beam_size)
encoder_outputs = tf.constant([[[1, 3, 1], [2, 3, 2]], [[2, 3, 4], [2, 3, 2]]])
print(encoder_outputs.get_shape()) # (2, 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()用法的实例分析内容到此结束,希望能为读者提供有价值的参考,欢迎继续支持本站获取更多技术资讯。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表