张量流 - 在定义模型时使用动态形状

时间:2017-12-18 12:33:15

标签: python tensorflow

我有一批输入:

input = tf.placeholder(tf.float32, [NUM_SAMPLE, None, 15])

对于批处理中的每一个,我都有一个描述行关系的字典。它看起来像:

dic = {i:{j:rij,k:rik,...},j:{i:rij,l:rjl,...},...}

现在我想为每个样本和相应的dic做这个:

updated_sample = sample
for i in range(len(sample)):
    for j in dic[i]:
        tmp = concanate(sample[j],rij)
        updated_sample[i] += matmul(tmp,W)

其中W对于所有样本和行都是相同的。

但是,我不能在张量流中使用len(样本)。似乎tf.while_loop可能是答案,但我不知道如何在这个问题中使用它。有什么建议吗?

此外,我可以在tensorflow中以这种方式使用字典吗?

1 个答案:

答案 0 :(得分:0)

len(sample)的张量流中有2个类似物:

  • tf.shape(样品)[0]
  • sample.get_shape()。as_list()[0]

第一个,tf.shape(sample)返回一个长度等于张量等级的整数张量,tf.shape(sample)[0]是一个形状为()的张量,应该在tenosrflow中使用工作流程。

第二个,sample.get_shape()返回一个Tensor.shape对象,执行sample.get_shape().as_list()将其转换为整数列表。

在您的情况下,您应该使用其中的第二个。

还考虑在numpy级别执行此计算的选项,然后通过占位符将它们输入到图形中。