Keras,如何构建自定义损失t包含距离矩阵中的每一对?

时间:2017-04-04 05:26:53

标签: keras keras-layer

问题定义

我有一个距离矩阵M.这个距离Matrix M定义了s.t

[M]_i_j = D(batch_i,batch_j) where D is some distance function.

因此M是batchsize X batchsize

现在我的custom loss我希望能够计算矩阵中几乎每两对的总和。为此,我有另一个matrix S,这个矩阵定义为

[S]_i_j = 1 <=> batch_i and batch_j are **not** from the same class.
[S]_i_j = 0 <=> batch_i and batch_j are from the same class. 

Now I want to sum  `Max{0,[M]_i_s+[M]_i_n}`,
For all pairs s.t  [M]_i_s is cell s.t [S]_i_j = 0 and [M]_i_n is a cell s.t [S]_i_n =1 

我唯一想到的选择是

  1. 迭代M并考虑S同时这样做。但在Keras我无法迭代Tensor。
  2. 创建一些大小为(batchsize)的矩阵P ^ 2x(可能的对数),然后将矩阵M平移到一个向量并计算(flat(M))* P
  3. 第一个我做不到的。第二个我没有成功用Tensor操作创建这个矩阵。我以为我可以提前预先计算这个矩阵P并将其设置为预测向量。但是Keras强制prediction向量与batch的大小相同......

    知道怎么做1或2或任何其他想法如何解决Keras中的这个问题?

    谢谢!

0 个答案:

没有答案