Я работаю над 1-скрытой нейронной сетью с 2000 нейронов и 8 + постоянными входными нейронами для решения проблемы регрессии.
В частности, в качестве оптимизатора я использую RMSprop с параметром обучения = 0.001,Активация ReLU от входа к скрытому слою и линейная от скрытого к выходу.Я также использую мини-пакетный градиент-спуск (32 наблюдения) и запускаю модель 2000 раз, то есть эпох = 2000.
Моя цель, после тренировки, извлечь веса из лучшихНейронная сеть из 2000 года запуска (где после многих испытаний самый лучший никогда не бывает последним, а под лучшим я имею в виду тот, который приводит к наименьшему MSE).
Использование save_weights ('my_model_2.h5', save_format =' h5 ') на самом деле работает, но, насколько я понимаю, он извлекает веса из прошлой эпохи, а я хочу, чтобы те из эпохи, в которой NN показал лучшие результаты.Пожалуйста, найдите код, который я написал:
def build_first_NN():
model = keras.Sequential([
layers.Dense(2000, activation=tf.nn.relu, input_shape=[len(X_34.keys())]),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mean_squared_error',
optimizer=optimizer,
metrics=['mean_absolute_error', 'mean_squared_error']
)
return model
first_NN = build_first_NN()
history_firstNN_all_nocv = first_NN.fit(X_34,
y_34,
epochs = 2000)
first_NN.save_weights('my_model_2.h5', save_format='h5')
trained_weights_path = 'C:/Users/Myname/Desktop/otherfolder/Data/my_model_2.h5'
trained_weights = h5py.File(trained_weights_path, 'r')
weights_0 = pd.DataFrame(trained_weights['dense/dense/kernel:0'][:])
weights_1 = pd.DataFrame(trained_weights['dense_1/dense_1/kernel:0'][:])
Тогда извлеченные веса должны быть теми из последних эпох 2000 года: как я могу получить их от того, в котором MSE было наименьшим?
Ждем каких-либо комментариев.
РЕДАКТИРОВАТЬ: РЕШЕНО
Основываясь на полученных предложениях, что касается общего интереса, вот как я обновил свой код, выполняя свои задачи:
# build_first_NN() as defined before
first_NN = build_first_NN()
trained_weights_path = 'C:/Users/Myname/Desktop/otherfolder/Data/my_model_2.h5'
checkpoint = ModelCheckpoint(trained_weights_path,
monitor='mean_squared_error',
verbose=1,
save_best_only=True,
mode='min')
history_firstNN_all_nocv = first_NN.fit(X_34,
y_34,
epochs = 2000,
callbacks = [checkpoint])
trained_weights = h5py.File(trained_weights_path, 'r')
weights_0 = pd.DataFrame(trained_weights['model_weights/dense/dense/kernel:0'][:])
weights_1 = pd.DataFrame(trained_weights['model_weights/dense_1/dense_1/kernel:0'][:])