Tensorflow重塑和垫

时间:2017-03-13 11:29:10

标签: tensorflow

我有一个2D Tensor,每行包含一个数据点。图形构建时未知数据大小。我需要将数据Tensor转换为RNN的批处理作为3D Tensor,其中新元素用零填充。在图构建时,不知道序列长度和序列数。序列长度为tf.placeholder,数据张量是先前TF操作的输出。我该怎么转

# Data
[[1 1]
 [1 1]
 [2 2]
 [3 3]
 [3 3]
 [3 3]]
# Sequence lengths
[2 1 3]

进入这个

[[[1 1]
  [1 1]
  [0 0]]

 [[2 2]
  [0 0]
  [0 0]]

 [[3 3]
  [3 3]
  [3 3]]]

tf.split + tf.pad + tf.concat方法不起作用,因为在图构建时不知道序列数,tf.split需要num_or_size_splits参数有固定的形状。

tf.dynamic_partition + tf.stack方法使用tf.while_loop从序列长度生成的分区索引不起作用,因为num_partitions的{​​{1}}参数需要是固定的整数,而不是Tensor,并且在图形构建时不知道序列的数量。

tf.dynamic_partition + tf.scatter_update方法使用tf.reshape从序列长度生成的行索引和行值不起作用,因为tf.while_loop需要tf.scatter_update和{ {1}}需要固定的大小(数据大小Tensor在图构建时不知道)。

我可以在图形构建时修复批量大小,但这导致需要在批量大小更改时重建图形,因此我不想这样做。

这可能实现吗?

0 个答案:

没有答案