Ric*_*o D 4 python callback neural-network keras tensorflow
我有兴趣在拟合我的 keras 模型时创建回调。更详细地说,我想在每次 epoch 结束时从带有 val_acc 的机器人电报中收到一条消息。我知道你可以添加一个 callback_list 作为参数,classifier.fit()但是许多回调是由 keras 预先构建的,我不知道如何添加自定义的。
谢谢!
这是我如何向回调添加验证准确性的示例:
class AccuracyHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.acc = []
def on_epoch_end(self, batch, logs={}):
self.acc.append(logs.get('val_acc'))
history = AccuracyHistory()
model.fit(x, y,
...
callbacks=[history])
Run Code Online (Sandbox Code Playgroud)
例如,我提供了带有 F1 指标的自定义回调。它在每个 epoch 结束时计算 F1,不是分批计算,而是针对所有通过的训练数据(以及可选的验证)。可以使用其他所有指标轻松自定义
class F1History(tf.keras.callbacks.Callback):
def __init__(self, train, validation=None):
super(F1History, self).__init__()
self.validation = validation
self.train = train
def on_epoch_end(self, epoch, logs={}):
logs['F1_score_train'] = float('-inf')
X_train, y_train = self.train[0], self.train[1]
y_pred = (self.model.predict(X_train).ravel()>0.5)+0
score = f1_score(y_train, y_pred)
if (self.validation):
logs['F1_score_val'] = float('-inf')
X_valid, y_valid = self.validation[0], self.validation[1]
y_val_pred = (self.model.predict(X_valid).ravel()>0.5)+0
val_score = f1_score(y_valid, y_val_pred)
logs['F1_score_train'] = np.round(score, 5)
logs['F1_score_val'] = np.round(val_score, 5)
else:
logs['F1_score_train'] = np.round(score, 5)
Run Code Online (Sandbox Code Playgroud)
适合:
es = EarlyStopping(patience=3, verbose=1, min_delta=0.001, monitor='F1_score_val', mode='max', restore_best_weights=True)
model.fit(x_train,y_train, epochs=10,
callbacks=[F1History(train=(x_train,y_train),validation=(x_val,y_val)),es])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7728 次 |
| 最近记录: |