我正在训练一个卷积网络,一旦验证错误达到 90%,我想停止训练。我考虑过使用 EarlyStopping 并将基线设置为 0.90,但是只要验证准确度低于给定时期数的基线(此处仅为 0),它就会停止训练。所以我的代码是:
es=EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.90,patience=0)
history = model.fit(training_images, training_labels, validation_data=(test_images, test_labels), epochs=30, verbose=2,callbacks=[es])
Run Code Online (Sandbox Code Playgroud)
当我使用此代码时,我的训练在第一个具有给定结果的 epoch 后停止:
训练 60000 个样本,验证 10000 个样本
纪元 1/30 60000/60000 - 7s - 损失:0.4600 - acc:0.8330 - val_loss:0.3426 - val_acc:0.8787
一旦验证准确率达到 90% 或以上,我还能尝试停止训练吗?
下面是代码的其余部分:
tf.keras.layers.Conv2D(64, (3,3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(152, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer=Adam(learning_rate=0.001),loss='sparse_categorical_crossentropy', metrics=['accuracy'])
es=EarlyStopping(monitor='val_acc',mode='auto',verbose=1,baseline=.90,patience=0)
history = model.fit(training_images, training_labels, validation_data=(test_images, test_labels), epochs=30, verbose=2,callbacks=[es])
Run Code Online (Sandbox Code Playgroud)
谢谢!