首页 > 解决方案 > 关于多个输出的 Keras 回归问题中的损失加权

问题描述

我正在为回归问题运行 Hyperas 优化,具有 3 个预测变量 (X) 和 2 个目标 (Y)。

在摄取原始数据后,我这样做了:

X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size=0.2, random_state=111)

# Input layers and Hidden Layers
model = Sequential()
model.add(Dense({{choice([np.power(2,1),np.power(2,2),np.power(2,3),np.power(2,4),np.power(2,5)])}}, input_dim = X_train.shape[1]))
model.add(Activation({{choice(['tanh','relu', 'sigmoid'])}}))
model.add(Dropout({{uniform(0, 1)}}))
model.add(Dense({{choice([np.power(2,1),np.power(2,2),np.power(2,3),np.power(2,4),np.power(2,5)])}}))
model.add(Activation({{choice(['tanh','relu', 'sigmoid'])}}))
model.add(Dropout({{uniform(0, 1)}}))

# Output layer
model.add(Dense(Y_train.shape[1]))
model.add(Activation('linear'))

model.compile(loss='mae', metrics=['mae'],optimizer=optimizer, loss_weights=[0.6,0.4])

history = model.fit(X_train, Y_train,
          batch_size={{choice([16,32,64,128])}},
          epochs={{choice([20000])}},
          verbose=2,
          validation_data=(X_val, Y_val),
          callbacks=callbacks_list)

但是,在运行它时,它会说:

ValueError: When passing a list as loss_weights, it should have one entry per model output. The model has 1 outputs, but you passed loss_weights=[1, 1]

我猜这是由于我的输入和输出的格式。但是,我无法弄清楚我应该将其输入模型的正确格式。

请欣赏您的建议,谢谢。

标签: pythonkeras

解决方案


推荐阅读