如何在分类器模型中添加 Earlystopper

数据挖掘 Python 神经网络 深度学习 喀拉斯 python-3.x
2022-02-18 14:42:28

我为一项任务设计了以下二元分类器神经网络模型。我想为模型添加一个早期停止器,以便模型在它已显着停止学习的时期停止。我怎样才能做到这一点?

模型

X = badge1_data[['1','2','3','Score']] 
y = badge1_data['APR']

#Standardizing the Input Features
scaler = StandardScaler()
X = scaler.fit_transform(X)

#Train Test split
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.3)

#Create Model
model = Sequential()
model.add(Dense(4, 
                  input_dim=4, 
                  kernel_initializer='normal', 
                  activation='relu'))

model.add(Dense(2, 
                  kernel_initializer='normal', 
                  activation='relu'))
   
model.add(Dense(1, 
                  activation='sigmoid',
                  kernel_initializer='normal'))
    
#Compile Model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

#Fit Model
model.fit(X_train, y_train, epochs = 5000, validation_split = 0.3, verbose=0, batch_size=256)

#Make predictions and convert to binary value
pred_train = model.predict(X_train)
pred_test = model.predict(X_test)

#ROC AUC Score
print('Train AUC = {:}'.format(roc_auc_score(y_train,pred_train)))
print('Test AUC = {:}'.format(roc_auc_score(y_test,pred_test)))

#Accuracy
print('Train Accuracy = ',accuracy_score(y_train,pred_train.round()))
print('Test Accuracy = ',accuracy_score(y_test,pred_test.round()))
1个回答

可以通过 Keras 回调实现提前停止。

early_stop= tf.keras.callbacks.EarlyStopping(monitor='loss', patience=3)

history = model.fit(X, y, callbacks=[early_stop])

patience: Number of epochs with no improvement after which training will be stopped.

要定义“显着学习停止”的含义,您将不得不尝试使用回调的参数。例如
monitor="val_loss"、min_delta=0、patience=0、mode="auto"、baseline=None等。

Keras_API