Keras中结合多个输出的自定义损失函数

Keras中结合多个输出的自定义损失函数,keras,loss-function,Keras,Loss Function,我做了大量的搜索,仍然无法写出一个自定义的损失函数,其中包含多个相互作用的输出 我有一个神经网络,定义如下: def NeuralNetwork(): inLayer = Input((2,)); layers = [Dense(numNeuronsPerLayer,activation = 'relu')(inLayer)]; for i in range(10): hiddenLyr = Dense(5,activation = 'tanh',nam

我做了大量的搜索,仍然无法写出一个自定义的损失函数,其中包含多个相互作用的输出

我有一个神经网络,定义如下:

def NeuralNetwork():

    inLayer = Input((2,));
    layers = [Dense(numNeuronsPerLayer,activation = 'relu')(inLayer)];
    for i in range(10):
        hiddenLyr = Dense(5,activation = 'tanh',name = "layer"+ str(i+1))(layers[i]);
        layers.append(hiddenLyr);
    out_u = Dense(1,activation = 'linear',name = "out_u")(layers[i]);
    out_k = Dense(1,activation = 'linear',name = "out_k")(layers[i]);

    outLayer = Concatenate(axis=-1)([out_u,out_k]);

    model = Model(inputs = [inLayer], outputs = outLayer);

    return model
我现在尝试定义一个自定义损失函数,如下所示:

def computeLoss(true,prediction):

          u_pred = prediction[:,0];
          k_pred = prediction[:,1];
          loss = f(u_pred)*k_pred;
          return loss;

其中f(u_pred)是u_pred的一些操作。当我只使用u_pred(即,仅来自神经网络的单个输出)时,代码似乎工作正常并产生正确的结果。然而,当我试图为k_pred包含另一个输出并在损失函数中执行预测张量切片时,我开始得到错误的结果。我觉得我在处理Keras中的多个输出时做错了什么,但不确定我的错误在哪里。欢迎任何关于我如何进行的帮助

我发现不能只使用索引(即[:,0]或[:,1])来切片tf中的张量。手术似乎不起作用。相反,使用tensorflow中的内置函数作为 详述于

所以有效的语法是


(u_pred,k_pred)=tf.split(预测,num_或大小_splits=2,轴=1)

在过去的几天里,我一直在到处寻找这个答案,感谢您在找到解决方案时给出的答案!