Класс CSVLogger
Класс CSVLogger является колбэком Keras и сохраняет
метрики обучения модели в CSV-файл после каждой эпохи.
Первым параметром передается имя файла для сохранения.
Вторым параметром можно передать разделитель separator,
по умолчанию используется запятая. Третьим параметром
append указывается, нужно ли дописывать данные в
существующий файл. Если передать append=False,
файл будет перезаписан.
Синтаксис
tf.keras.callbacks.CSVLogger(filename, separator=',', append=False)
Пример
Давайте обучим простую модель и сохраним историю
обучения в файл 'model.keras' с расширением .csv:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
x = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]])
y = np.array([[2.0], [4.0], [6.0], [8.0], [10.0]])
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
logger = tf.keras.callbacks.CSVLogger('training.csv')
model.fit(x, y, epochs=3, verbose=0, callbacks=[logger])
print("CSV file created")
Результат выполнения кода:
"CSV file created"
Пример
Давайте сохраним историю обучения с другим разделителем и посмотрим содержимое файла:
import tensorflow as tf
import numpy as np
import csv
tf.random.set_seed(0)
x = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]])
y = np.array([[2.0], [4.0], [6.0], [8.0], [10.0]])
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
logger = tf.keras.callbacks.CSVLogger(
'training_semicolon.csv',
separator=';'
)
model.fit(x, y, epochs=2, verbose=0, callbacks=[logger])
with open('training_semicolon.csv', 'r') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
print(row)
Результат выполнения кода:
['epoch', 'loss']
['0', '30.2143']
['1', '28.9321']
Пример
Давайте допишем результаты нового обучения в
существующий CSV-файл, используя параметр append=True:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
x = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]])
y = np.array([[2.0], [4.0], [6.0], [8.0], [10.0]])
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
logger = tf.keras.callbacks.CSVLogger(
'training_append.csv',
append=True
)
model.fit(x, y, epochs=3, verbose=0, callbacks=[logger])
model.fit(x, y, epochs=2, verbose=0, callbacks=[logger])
print("Data appended to CSV file")
Результат выполнения кода:
"Data appended to CSV file"
Смотрите также
-
класс
ModelCheckpoint,
который сохраняет модель во время обучения -
класс
EarlyStopping,
который останавливает обучение при отсутствии улучшений -
класс
History,
который хранит историю обучения в памяти -
класс
TensorBoard,
который сохраняет логи для визуализации обучения