Deep learning 如何为多维目标定义自定义损失函数

Deep learning 如何为多维目标定义自定义损失函数,deep-learning,neural-network,tensorflow2.0,loss-function,tf.keras,Deep Learning,Neural Network,Tensorflow2.0,Loss Function,Tf.keras,我使用的是Tensorflow 2.0,我使用的是普通的顺序层 我正在尝试定义一个自定义损失函数,它执行以下操作: 获取输入的某些元素 计算它们的总和并反转结果 将结果与y_pred的一部分相乘 将结果约束为尽可能接近1 因此,损失函数将是L()=MSE()+(如上所述) 我的代码如下: def custom_loss_wrapper(input_train): @tf.function def summing(row): return tf.math.red

我使用的是Tensorflow 2.0,我使用的是普通的顺序层

我正在尝试定义一个自定义损失函数,它执行以下操作:

  • 获取输入的某些元素
  • 计算它们的总和并反转结果
  • 将结果与y_pred的一部分相乘
  • 将结果约束为尽可能接近1
因此,损失函数将是L()=MSE()+(如上所述)

我的代码如下:

def custom_loss_wrapper(input_train):
    @tf.function
    def summing(row):
        return tf.math.reduce_sum(row, 1,keepdims=True)

    @tf.function
    def custom_loss(y_true, y_pred):
        row_M = input_train
        row_M = row_M[:, 2:5]
        sum_M = summing(row_M)
        inv_M = (1/sum_M)

        row_B = y_pred[:, :3]
        sum_B = summing(row_B)

        row_Q = tf.math.multiply(inv_M,row_B)
        alpha = 0.01
        penalty =  K.mean(K.square(sum_Q - 1))

        return K.mean(K.square(y_true - y_pred)) + (1/alpha) * penalty

    return custom_loss

我想知道我所做的是否正确。没有错误和训练运行,但我不知道这段代码是否符合我试图定义的内容。大多数情况下,如果考虑到批量数据而不是单个记录,这是正确的

如果它有效,您为什么怀疑它是否有效?这是一个好问题!问题是我没有办法检查培训是否有效,我没有一个基准如果有效,你为什么怀疑它有效?这是个好问题!问题是我没有办法检查培训是否有效,我没有一个基准