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)
来评估当前生成的图像。
不幸的是,我无法提供 g
和 compare_img
,因为它们是 python 函数和 python 无法转换为张量的字典。
有没有办法以某种方式破解它并达到预期的结果?
提前致谢!
您可以将带有 tensorflow 的外部函数与 tf.map
一起使用,但我不敢说,这些无法通过它计算梯度。但是你的损失函数在任何情况下都需要是可推导的。所以你必须在tensorflow中编写函数。
对于您的字典值,您可以使用
创建一个查找表
table = tf.contrib.lookup.HashTable(
tf.contrib.lookup.KeyValueTensorInitializer(keys, values), -1)
我有一个简单的 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)
来评估当前生成的图像。
不幸的是,我无法提供 g
和 compare_img
,因为它们是 python 函数和 python 无法转换为张量的字典。
有没有办法以某种方式破解它并达到预期的结果?
提前致谢!
您可以将带有 tensorflow 的外部函数与 tf.map
一起使用,但我不敢说,这些无法通过它计算梯度。但是你的损失函数在任何情况下都需要是可推导的。所以你必须在tensorflow中编写函数。
对于您的字典值,您可以使用
创建一个查找表table = tf.contrib.lookup.HashTable(
tf.contrib.lookup.KeyValueTensorInitializer(keys, values), -1)