TF2.x自定义损失函数numpy

时间:2020-06-15 00:30:18

标签: python numpy tensorflow

我正在尝试使用自定义损失函数。我现在使用的是TF 2.x,默认情况下,急切执行处于打开状态。我对TF 1.x非常满意,但是遇到了太多问题。除了使用tf.py_function()包装函数外,还有其他选择吗?如果没有,我将如何包装呢?

通用:具有自定义损失功能的自动编码器,可围绕异常的排名差异进行构建。目前,我仅使用scipy stats rankdata,但将来会有所改变。

张量形状 n,x,x,1

n 个图像,每个图像为 x,x 暗。 因此,我想在所有 n 个图像的每对 orig,pred 上运行此自定义损失函数。

常规算法:

import scipy.stats as ss
def rank_loss(orig, pred):
    orig_arr = orig.numpy()  # want x,x,1
    pred_arr = pred.numpy()
    orig_rank = (ss.rankdata(orig_arr))  # returns flat array of length size of array
    pred_rank = (ss.rankdata(pred_arr))
    distance_diff = 0
    for i in range(len(orig_rank)): # gets sum of rank differences
        distance_diff = abs(orig_rank[i] - pred_rank[i])
    return distance_diff

如果无法执行此操作,是否仅限于可用的tf.<funcs>或如何将张量作为某种形式的数组拉出,以便可以跨两个张量运行比较计算?

我也看过tf.make_ndarray,但这似乎并不适用。

0 个答案:

没有答案