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) 在过去的几天里,我一直在到处寻找这个答案,感谢您在找到解决方案时给出的答案!