Mat*_*ias 5 python keras tensorflow
我正在为我的训练编写一个自定义的提前停止回调tf.keras。为此,我可以在回调函数之一中设置变量self.model.stop_training = True,例如on_epoch_end(). 然而,Keras 仅在当前 epoch 完成时才停止训练,即使我在一个 epoch 的训练中设置此变量,例如在on_batch_end().
因此我的问题是:Keras 有没有办法立即停止训练,即使是在当前时代的进展范围内?
您可以使用model.stop_training参数来停止训练。
例如,如果我们想在第二个时期的第三批停止训练,那么您可以执行如下操作。
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
import numpy as np
import pandas as pd
class My_Callback(keras.callbacks.Callback):
def on_epoch_begin(self, epoch, logs={}):
self.epoch = epoch
def on_batch_end(self, batch, logs={}):
if self.epoch == 1 and batch == 3:
print (f"\nStopping at Epoch {self.epoch}, Batch {batch}")
self.model.stop_training = True
X_train = np.random.random((100, 3))
y_train = pd.get_dummies(np.argmax(X_train[:, :3], axis=1)).values
clf = Sequential()
clf.add(Dense(9, activation='relu', input_dim=3))
clf.add(Dense(3, activation='softmax'))
clf.compile(loss='categorical_crossentropy', optimizer=SGD())
clf.fit(X_train, y_train, epochs=10, batch_size=16, callbacks=[My_Callback()])
Run Code Online (Sandbox Code Playgroud)
输出:
Epoch 1/10
100/100 [==============================] - 0s 337us/step - loss: 1.0860
Epoch 2/10
16/100 [===>..........................] - ETA: 0s - loss: 1.0830
Stopping at Epoch 1, Batch 3
<keras.callbacks.callbacks.History at 0x7ff2e3eeee10>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2831 次 |
| 最近记录: |