【发布时间】:2021-01-10 18:58:17
【问题描述】:
我已经使用 Keras 实现了一个神经网络,现在我想尝试输入特征的不同组合并进行超参数调整。 到目前为止,我使用 MSE 作为损失,使用 MAE 作为度量。我的代码如下所示:
#Create the model
model = Sequential()
#Add first hidden layer
model.add(Dense(units=10, input_dim=n_features, activation='relu'))
#Add output layer
model.add(Dense(units=1, activation='sigmoid'))
model.summary()
model.compile(optimizer='adam', loss='mse', metrics=['mae'])
history = model.fit(x_train, y_train, batch_size=32, epochs=100, validation_data=(x_val, y_val))
result = pd.DataFrame(history.history)
result.head(5)
这给了我每个 epoch 之后的训练损失和 mae,以及验证损失和 mae。
现在,在比较不同的网络时,我想拿一个损失值进行比较。 我不确定我是否可以只使用 model.evaluate() 以及它的作用。
#store and print validation loss and validation mae
val_loss = model.evaluate(x_val, y_val, verbose=0)[0]
val_mae = model.evaluate(x_val, y_val, verbose=0)[1]
print('validation loss (MSE):', val_loss, '\nvalidation MAE:', val_mae)
我从 model.evaluate() 得到的输出与我对所有 100 个 epoch 取最小损失或 MAE 不同。 那么 model.evaluate() 有什么作用呢?
【问题讨论】:
-
使用早期停止和恢复体重来实现这一目标