Это ожидаемое поведение. CSVLogger
реализует методы обратного вызова только для обучения.
Для оценки методы обратного вызова on_test_begin()
, on_test_batch_begin()
, on_test_batch_end()
и on_test_end()
вызываются обучающим модулем keras, которые не реализованы в CSVLogger, и, следовательно, файлы csv не создаются при использовании с model.evaluate ().
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])