gpt4 book ai didi

python - 如何在 Keras 中获取历史回调指标?

转载 作者:行者123 更新时间:2023-12-04 01:47:39 25 4
gpt4 key购买 nike

如何检索回调指标的历史记录?我有一个 Metrics 类,我在 Keras 模型的 fit 函数中使用它,如下所示 callbacks=[model_metrics]

这是Metrics类和fit函数的完整代码。

class Metrics(Callback):

def on_train_begin(self, logs={}):
self.val_f1s = []
self.val_bal_accs = []

def on_epoch_end(self, epoch, logs={}):
val_predict = np.argmax((np.asarray(self.model.predict(self.validation_data[0]))).round(), axis=1)
val_targ = np.argmax(self.validation_data[1], axis=1)
_val_f1 = metrics.f1_score(val_targ, val_predict, average='weighted')
_val_bal_acc = metrics.balanced_accuracy_score(val_targ, val_predict)
self.val_f1s.append(_val_f1)
self.val_bal_accs.append(_val_bal_acc)
print(" — val_f1: {:f} — val_bal_acc: {:f}".format(_val_f1, _val_bal_acc))
return

model_metrics = Metrics()

history = model.fit(np.array(X_train), y_train,
validation_data=(np.array(X_test), y_test),
epochs=5,
batch_size=2,
callbacks=[model_metrics],
shuffle=False,
verbose=1)

如何获取val_f1val_bal_acc历史?现在我只能访问lossval_lossaccval_acc:

print(history.history.keys())

最佳答案

要与 keras 历史 API 交互,您需要为 metrics 而不是 callbacks 传递参数。

在当前状态下,您的 val_f1val_bal_acc 不会存储在历史对象中,而是存储在您的 model_metrics 对象。

您可以像这样访问它们:

model_metrics.val_f1s

这与访问任何对象的属性相同。

最后,如果你确实想创建一个自定义指标并想从历史中访问它,你需要定义一个自定义指标(作为一个函数),然后将它传递给 中的 metrics kwarg模型.编译。这是这样做的:

def my_metric(y_true y_pred):
return y_true # just a dummy return value

# assume that the model is defined somewhere
model.compile(loss=..., optimizer=..., metrics = [my_metric]

然后你就可以在你得到的历史对象中找到 val_my_metric 了。

关于python - 如何在 Keras 中获取历史回调指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com