在每次迭代中为动态大小的张量创建占位符

时间:2018-10-02 09:45:23

标签: python tensorflow

我通过以下方式创建张量的占位符:

self.sample_set = tf.placeholder(tf.int32, [None,None,self.max_input_right]) --- (1)

现在,我要切片此形状为[None,self.max_input_right]的张量。基本上上述张量由值列表组成,现在我想从列表中提取这些值。但是随着feed_dict的每次迭代,此列表的大小都会更改。 因此,在执行步骤(1)之后,我一直在寻找是否可以执行以下操作:

for i in range(self.k):
        self.ans_set = tf.slice(self.sample_set, [0,i])
        self.ans_sets.append(self.ans_set) 

其中,k的值将随着每个feed_dict的变化而变化。但是我无法理解在构建图形时如何传递k的变化值。

此问题可能类似于先前发布的问题: tensorflow dynamically create placeholders

但是这个答案并没有帮助我找到答案。

1 个答案:

答案 0 :(得分:0)

对于您的示例中的用例,您只需使用tf.unstack

self.sample_set = tf.placeholder(tf.int32, [None,None,self.max_input_right])
self.ans_sets = tf.unstack(self.sample_set)

这将为您提供3D张量的列表。默认情况下,unstack在轴0上有效,但是您也可以更改它。