这是预期行为。
CSVLogger
仅为培训实现回调方法。
为了评估,
on_test_begin()
,
on_test_batch_begin()
,
on_test_batch_end()
和
on_test_end()
callback方法由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])