损失函数 Keras out_dim > 1

Loss function Keras out_dim > 1

我有一个训练数据:

而且,我在 Keras 中有一个模型,其输出不止一维。我想预测 A、B 和 C:

model = Sequential()
model.add(GRU(32, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(Dense(3))
model.compile(loss='mean_squared_error', optimizer='adam')

但是我想要A中的最小值mean_squared_error,即损失函数只考虑A

我能做什么?

您可以定义自定义损失函数,仅根据 A 的值计算 mean_squared_error() 损失:

from keras import losses

def loss_A(y_true, y_pred):
    return losses.mean_squared_error(y_true[:,0], y_pred[:,0])

#...
model.compile(loss=loss_A, optimizer='adam')

您需要研究的是自定义损失函数:

def only_A_mean_squared(y_true, y_pred):
     return keras.losses.mean_squared_error(y_true[:,0], y_pred[:,0])

为了使用它:

model.compile(loss=only_A_mean_squared, optimizer='adam')

我在上面所做的是创建一个自定义损失函数,它只采用第一个维度('A')并将其提供给普通的 keras 均方误差损失函数。