Если обучение прекращено досрочно, лучшая модель сохраняется в файле best_model.h5.Но загрузка модели из файла занимает относительно много времени.Есть ли способ получить лучшую модель другим способом?
Например, путем создания файла в памяти и чтения его из памяти.Или поместив каждую модель для каждой эпохи в список и получив лучшую модель из списка, используя EarlyStopping.stopped_epoch для доступа к соответствующему элементу списка.
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import EarlyStopping, ModelCheckpoint
from keras.models import load_model
from sklearn.model_selection import train_test_split
df = pd.DataFrame(np.random.randint(0,100,size=(1000, 3))/100, columns=['x_1', 'x_2','y'])
x_train, x_test, y_train, y_test = train_test_split(df[['x_1', 'x_2']], df[['y']], test_size=0.2, random_state=0)
x_train, x_val, y_train, y_val = train_test_split(x_train, y_train, test_size=0.2, random_state=0)
callbacks = [EarlyStopping(monitor='val_loss', patience=2),
ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)]
model = Sequential()
model.add(Dense(units=1, activation='linear', input_dim=2))
model.add(Dense(units=1))
model.compile(loss='mean_squared_error',optimizer='adam',metrics=['mean_absolute_error', 'mean_squared_error'])
model.fit(x_train, y_train, epochs=100, batch_size=32, callbacks=callbacks, validation_data=(x_val, y_val))
model = load_model('best_model.h5')
print(model.evaluate(x_test, y_test, batch_size=32))