Tensorflow 中的外部损失函数

External loss function in Tensorflow

我有一个简单的 2 层密集 NN,我想使用回归模型计算图像的 4 个给定 ~ 700 特征。不幸的是,我没有真值元素,所以我使用自定义损失函数。这是函数的来源:

def loss_function(logits, img, g, compare_img):

    final_img = img_pipeline(vga_8b=img, g=g%external color gamma function%)

    with tf.name_scope('Loss'):
        loss = score(gt_image=compare_img, curr_img=final_img)
        return loss

其中logits是当前评估的4个数,g只是一个插值函数,作为图像的颜色伽玛,img是外部灰度图像,用于生成最终结果图像,用于score 函数。 compare_img不是ground truth图像,而是score函数中使用的一些统计值(kept in python dict)来评估当前生成的图像。 不幸的是,我无法提供 gcompare_img,因为它们是 python 函数和 python 无法转换为张量的字典。

有没有办法以某种方式破解它并达到预期的结果?

提前致谢!

您可以将带有 tensorflow 的外部函数与 tf.map 一起使用,但我不敢说,这些无法通过它计算梯度。但是你的损失函数在任何情况下都需要是可推导的。所以你必须在tensorflow中编写函数。

对于您的字典值,您可以使用

创建一个查找表

table = tf.contrib.lookup.HashTable( tf.contrib.lookup.KeyValueTensorInitializer(keys, values), -1)