为连续条件随机字段创建自定义丢失

时间:2018-05-16 12:36:56

标签: python keras crf

我目前正在尝试使用Keras实现1中提供的网络。该模型可以分为两部分:第一部分,称为超像素深度网络,对超像素分割的图像的深度值进行回归,而第二部分是连续条件随机场图层,其目标是确保空间和时间的一致性在为视频的每个帧预测的深度图中。每个部分都有一组参数,W代表超级像素网络,alpha_s& CRF的alpha_t。两者都是使用随机梯度下降联合训练的。

我在实现超像素深度网络时没有问题,它只是VGG-16的前31层,后面是超像素池层。对我来说棘手的部分是CRF层和以下损失函数:

loss function expression

在这个等式中:

  • 我是视频中的一个框架。
  • d是地面实况超像素深度的Nx1向量,其中N是视频中超级像素的数量。
  • L是一个NxN矩阵,取决于alpha_s,alpha_t和分割算法给出的超级像素之间的时空关系。
  • Z是取决于W的估计超像素深度的Nx1矢量。

如果我没有记错的话,这个损失函数没有传统的形式“损失(y_true,y_pred)"并使用y_true(表达式中的d)和网络权重(z和L)。我的想法是使用功能API并编写一个自定义损失函数来计算-log P(d | I),但我想知道如何计算梯度?我读过here,只要我们只使用现有的操作但是矩阵求逆不在张量流后端,Keras就会处理梯度计算。如果我打电话给tf.matrix_inverse会有效吗?

祝你好运, 安布鲁瓦兹

1赵,徐冉,王勋,陈启超。 "使用深度卷积神经网络和时空条件随机场的时间上一致的深度图预测。"计算机科学与技术杂志32.3(2017):443-456。 link

0 个答案:

没有答案