对几个输入进行推断以计算损失函数

时间:2017-07-15 14:58:11

标签: tensorflow

我正在对张量流中的感知过程进行建模。在我感兴趣的设置中,建模代理正在玩资源游戏:它必须选择 n 资源中的1个,仅依赖于分类器为资源提供的标签。每个资源都是一对有序的两个实数。分类器只能看到第一个真实的,但是收益取决于第二个。有一个功能从第一到第二。

无论如何,理想情况下我想以下列方式训练分类器:

  1. 在每次运行中,分类器都会为 n 资源提供标签。
  2. 然后代理获得对应于某个预定排名中的最高标签的资源的支付(例如,A> B> C> D),并且在抽奖的情况下随机获得。
  3. 损失被视为由此获得的支付与资源集中的最大支付之间的归一化绝对差。即,(Payoff_max - 支付)/ Payoff_max
  4. 为了实现这个目的,在计算损失之前,需要对每个资源进行一次 n 次推断。有没有办法在张量流中做到这一点?如果我以错误的方式解决问题,也可以自由地说出来。

1 个答案:

答案 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