【发布时间】:2020-04-12 11:36:44
【问题描述】:
我进行了大量搜索,但仍然无法编写一个自定义损失函数,其中包含多个交互的输出。
我有一个神经网络定义为:
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 中的多个输出时做错了,但不确定我的错误在哪里。欢迎任何有关我如何进行的帮助。
【问题讨论】:
标签: keras loss-function