Neural network 我正在训练keras神经网络。我想要一个由y_true*y_pred给出的自定义损失函数。允许这样做吗?

Neural network 我正在训练keras神经网络。我想要一个由y_true*y_pred给出的自定义损失函数。允许这样做吗?,neural-network,keras,loss-function,Neural Network,Keras,Loss Function,这是我的模型的一个片段: W1 = create_base_network(latent_dim) input_a = Input(shape=(1,latent_dim)) input_b = Input(shape=(1,latent_dim)) x_a = encoder(input_a) x_b = encoder(input_b) processed_a = W1(x_a) processed_b = W1(x_b) del1 = Lambda(Delta1, output_s

这是我的模型的一个片段:

W1 = create_base_network(latent_dim)

input_a = Input(shape=(1,latent_dim))
input_b = Input(shape=(1,latent_dim))

x_a = encoder(input_a)
x_b = encoder(input_b)

processed_a = W1(x_a)
processed_b = W1(x_b)

del1 = Lambda(Delta1, output_shape=Delta1_output_shape)([processed_a, processed_b])
model = Model(input=[input_a, input_b], output=del1)

# train
rms = RMSprop()
model.compile(loss='kappa_delta_loss', optimizer=rms)
基本上,神经网络获得两个输入的(预先训练的)编码器表示,并通过传递MLP计算两个输入的预测值差异。这个差异是Delta1,它是网络的y_pred。我希望损失函数是y_pred*y_true。然而,当我这样做的时候,我得到了一个错误,“无效目标:kappa_delta_损失”

我做错了什么

你几乎自己回答了这个问题。创造你的目标 功能类似于 喜欢 这个,

因此,您应该使用两个参数创建自定义损失函数,第一个参数是目标,第二个参数是预测

假设您的输出(y_pred)是标量,您的自定义目标可以是

def custom objective(y_true,y_pred)
    return K.dot(y_true,y_pred)
K表示keras后端(比theano示例更通用)

def custom objective(y_true,y_pred)
    return K.dot(y_true,y_pred)