我正在对张量流中的感知过程进行建模。在我感兴趣的设置中,建模代理正在玩资源游戏:它必须选择 n 资源中的1个,仅依赖于分类器为资源提供的标签。每个资源都是一对有序的两个实数。分类器只能看到第一个真实的,但是收益取决于第二个。有一个功能从第一到第二。
无论如何,理想情况下我想以下列方式训练分类器:
为了实现这个目的,在计算损失之前,需要对每个资源进行一次 n 次推断。有没有办法在张量流中做到这一点?如果我以错误的方式解决问题,也可以自由地说出来。
答案 0 :(得分:1)
我对ML的这方面知之甚少,但从编程的角度来看,我可以看到以两种方式做到这一点。一种方法是复制模型 n 次。所有副本都可以share the same variables。所有这些副本的输出将进入一些确定最高标签的函数。只要此函数是可微分的,变量就是共享的,并且 n 不是太大,它应该可以工作。您需要将所有 n 输入一起提供。请注意,backprop将遍历每个副本并更新权重 n 次。这通常不是问题,但如果是这样的话,我会想到使用partial_run可以做一些花哨的技巧。
另一种方法是使用tf.while_loop。它非常聪明 - 它存储每次循环运行的激活,并可以通过它们进行反向提升。唯一棘手的部分应该是在将它们输入你的损失之前积累推理结果。看看TensorArray吧。这个问题很有帮助:Using TensorArrays in the context of a while_loop to accumulate values