损失函数Keras out_dim> 1

时间:2018-11-03 12:40:06

标签: python tensorflow machine-learning keras loss-function

我有一个训练数据:

enter image description here

而且,我在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作为损失函数。

我能做什么?

2 个答案:

答案 0 :(得分:0)

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

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')

答案 1 :(得分:0)

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

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均方误差损失函数。