gpt4 book ai didi

python - CSVLogger 不适用于 keras 的 model.evaluate 流程

转载 作者:行者123 更新时间:2023-11-30 21:55:40 24 4
gpt4 key购买 nike

我想使用tensorflow 2.0(keras)将评估结果记录到文件中。我使用回调方法。它适用于 model.fit,但似乎不适用于 model.evaluate。这是我的代码:

csv_logger = CSVLogger(logfile, append=True, separator=';')
model.fit(train_dataset, epochs=50, callbacks=[csv_logger]) // works
model.evaluate(test_dataset, callbacks=[csv_logger]) // not work

我将评估结果记录到文件的方法是否错误?

最佳答案

这是预期的行为。 CSVLogger 实现回调方法仅用于训练。对于评估,会调用 on_test_begin()on_test_batch_begin()on_test_batch_end()on_test_end() 回调方法由 keras 训练模块执行,该模块不是由 CSVLogger 实现的,因此与 model.evaluate() 一起使用时不会创建 csv 文件。

https://github.com/tensorflow/tensorflow/blob/v2.0.0-alpha0/tensorflow/python/keras/callbacks.py#L1514

自定义 CSV 回调可以这样实现:

class MyCSVLogger(Callback):
def __init__(self, filename):
self.filename = filename
print(filename)

def on_test_begin(self, logs=None):
# open csv file
print('test begin')

def on_test_batch_begin(self, batch, logs=None):
pass

def on_test_batch_end(self, batch, logs=None):
# write the contents of the dictionary logs to csv file
# sample content of logs {'batch': 0, 'size': 2, 'loss': -0.0, 'accuracy': 1.0}
print(logs)

def on_test_end(self, logs=None):
# close csv file
print('test end')

csv_logger = MyCSVLogger('abc.csv')
model.evaluate(X_eval,y_eval, callbacks=[csv_logger])

关于python - CSVLogger 不适用于 keras 的 model.evaluate 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56388324/

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