Tensorflow整形和衬垫
我有一个2DTensorflow整形和衬垫,tensorflow,Tensorflow,我有一个2D张量,每行包含一个数据点。数据的大小在图形生成时未知。我需要将数据张量转换为RNN的一批数据,作为三维张量,新元素用零填充。在图形构建时,序列长度和序列数都未知。序列长度是一个tf。占位符,数据张量是先前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
张量,每行包含一个数据点。数据的大小在图形生成时未知。我需要将数据张量转换为RNN的一批数据,作为三维张量,新元素用零填充。在图形构建时,序列长度和序列数都未知。序列长度是一个tf。占位符,数据张量是先前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\u或\u size\u splits
参数具有固定的形状
tf.dynamic\u partition
+tf.stack
方法使用tf生成的分区索引。而从序列长度生成的\u loop
不起作用,因为tf.dynamic\u partitions
的num\u partitions
参数需要是固定整数,而不是张量,而序列的数量在图形构建时是未知的
tf.scatter\u update
+tf.使用tf生成的行索引和行值重新塑造方法。而从序列长度生成的\u loop
不起作用,因为tf.scatter\u update
需要变量
并且变量
需要固定大小(数据张量的大小在图形构建时未知)
我可以在构建图时修复批大小,但这会导致在批大小更改时需要重建图,因此我不想这样做
这可能实现吗?我刚刚问了一个类似的问题,并得到了答案。