使用验证集确定Keras中训练轮数

我想知道是否可以使用交叉验证或固定的预定义验证集来确定使用Keras在Python中训练神经网络的“最佳”轮数。我目前的代码如下:

from tensorflow.keras.layers import Dense, Activationfrom tensorflow.keras.models import Sequentialimport pandas as pdimport numpy as npmodel = Sequential()# Adding the input layer and the first hidden layermodel.add(Dense(16, activation = 'relu', input_dim = 243))# Adding the output layermodel.add(Dense(units = 1))model.compile(optimizer = 'adam',loss = 'mean_squared_error')model.fit(X, Y, batch_size = 32, epochs = 20)

如果可以的话,我需要在代码中添加什么?我知道这不是一个可复制的例子,但我认为这对于我的问题来说并不是必要的。


回答:

你完全正确!找到“最佳”训练轮数的最佳方法是使用回调

这将允许你在达到你感兴趣的度量的最佳分数时停止训练。以下是一个示例

model = Sequential()# Adding the input layer and the first hidden layermodel.add(Dense(16, activation = 'relu', input_dim = 243))# Adding the output layermodel.add(Dense(units = 1))model.compile(optimizer = 'adam',loss = 'mean_squared_error')es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=40) # 当验证损失40个轮次内没有减少时停止训练mc = ModelCheckpoint('best_model.h5', monitor='val_loss', mode='min', verbose=1, save_best_only=True) # 在验证损失最小的那一轮保存模型权重train = model.fit((train_X, train_label, batch_size=batch_size),epochs=1000,verbose=1,validation_data=(valid_X, valid_label),callbacks=[es,mc])# 你可以设置为1000个轮次,但模型会在40个轮次内没有更好的验证损失后停止

如果你想加载你的权重,我建议你上网查一下如何操作。保存权重可以让你在不需要重新训练的情况下重用模型。

最后,请注意,始终跟随验证损失分数并不总是最好的做法。一个练习可以是找出如何在准确率达到最大值时保存模型。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注