小编Jim*_*027的帖子

如何重置 Keras 指标?

为了做一些参数调整,我喜欢用 Keras 循环一些训练函数。但是,我意识到当tensorflow.keras.metrics.AUC()用作度量时,对于每个训练循环,都会将一个整数添加到 auc 度量名称中(例如 auc_1、auc_2、...)。所以实际上,即使从训练函数中出来,keras 指标也会以某种方式存储。

这首先导致回调不再识别指标,并且还让我想知道是否没有其他东西像模型权重一样存储。

如何重置指标以及是否有其他由 keras 存储的内容需要重置才能重新启动以进行培训?

您可以在下面找到一个最小的工作示例:

编辑:这个例子似乎只适用于 tensorflow 2.2

import numpy as np
import tensorflow as tf
import tensorflow.keras as keras
from tensorflow.keras.metrics import AUC


def dummy_network(input_shape):
    model = keras.Sequential()
    model.add(keras.layers.Dense(10,
                                 input_shape=input_shape,
                                 activation=tf.nn.relu,
                                 kernel_initializer='he_normal',
                                 kernel_regularizer=keras.regularizers.l2(l=1e-3)))

    model.add(keras.layers.Flatten())
    model.add(keras.layers.Dense(11, activation='sigmoid'))

    model.compile(optimizer='adagrad',
                  loss='binary_crossentropy',
                  metrics=[AUC()])
    return model


def train():
    CB_lr = tf.keras.callbacks.ReduceLROnPlateau(
        monitor="val_auc",
        patience=3,
        verbose=1,
        mode="max",
        min_delta=0.0001,
        min_lr=1e-6)

    CB_es = tf.keras.callbacks.EarlyStopping(
        monitor="val_auc",
        min_delta=0.00001,
        verbose=1,
        patience=10,
        mode="max",
        restore_best_weights=True)
    callbacks = [CB_lr, CB_es]
    y = [np.ones((11, 1)) for …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

6
推荐指数
1
解决办法
1630
查看次数