我有一批输入:
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中以这种方式使用字典吗?
答案 0 :(得分:0)
len(sample)
的张量流中有2个类似物:
第一个,tf.shape(sample)
返回一个长度等于张量等级的整数张量,tf.shape(sample)[0]
是一个形状为()
的张量,应该在tenosrflow中使用工作流程。
第二个,sample.get_shape()
返回一个Tensor.shape对象,执行sample.get_shape().as_list()
将其转换为整数列表。
在您的情况下,您应该使用其中的第二个。
还考虑在numpy级别执行此计算的选项,然后通过占位符将它们输入到图形中。