- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用生成器来训练和预测我的数据的分类。这是 ImageDataGenerator 的示例
from keras.preprocessing.image import ImageDataGenerator
batch_size = 16
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'data/train', # this is the target directory
target_size=(150, 150),
batch_size=batch_size,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
'data/validation',
target_size=(150, 150),
batch_size=batch_size,
class_mode='binary')
model.fit_generator(
train_generator,
steps_per_epoch=2000 // batch_size,
epochs=50,
validation_data=validation_generator,
validation_steps=800 // batch_size)
model.save_weights('first_try.h5') # always save your weights after training or during training
我的问题是如何创建 AUC and ROC当我使用 fit_generator
时?
最佳答案
我认为在这种情况下,您最好的选择是将 AUC 定义为新指标。为此,您必须在 tensorflow 中定义指标(我假设您使用的是 tensorflow 后端)。
我之前尝试过的一种方法(但是,我不记得我测试过它的结果正确性)是这样的:
def as_keras_metric(method):
"""
This is taken from:
https://stackoverflow.com/questions/45947351/how-to-use-tensorflow-metrics-in-keras/50527423#50527423
"""
@functools.wraps(method)
def wrapper(*args, **kwargs):
""" Wrapper for turning tensorflow metrics into keras metrics """
value, update_op = method(*args, **kwargs)
tf.keras.backend.get_session().run(tf.local_variables_initializer())
with tf.control_dependencies([update_op]):
value = tf.identity(value)
return value
return wrapper
然后在编译模型时定义指标:
model.compile(metrics=['accuracy', as_keras_metric(tf.metrics.auc)], optimizer='adam', loss='categorical_crossentropy')
虽然这会吐出数字,但我还没有确定它们是否正确。如果您能够对此进行测试,并且它给出的结果是否正确,请告诉我,我很想知道。
解决此问题的第二种方法是使用 callback class并至少定义 on_epoch_end
函数,然后你可以调用sklearn
roc_auc_score
从那里打印出来或保存到日志中。
但是,到目前为止我发现,您需要通过 __init__
向它提供训练数据。 ,因此对于生成器,您需要确保回调的生成器提供与模型的拟合生成器相同的数据。另一方面,对于验证生成器,可以使用 self.validation_data
从回调类访问它。 ,与提供给 fit_generator
的相同.
关于python - 如何在使用 fit_generator 和 evaluate_generator 训练我的网络时绘制 AUC 和 ROC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53551400/
TL;DR 我的模型训练了 1 个时期 - 用于测试目的。然而,当多次评估时,每次我使用相同的训练数据运行 evaluate_generator 方法时,都会产生不同的准确度。为什么会发生这种情况?在
对于二元分类问题,我从 keras evaluate_generator() 和 predict_generator() 获得了不同的模型精度: def evaluate_model(model, g
我使用keras数据增强来执行图像分类(十类图像)。最后一个训练周期的结果如下: Epoch 50/50 4544/4545 [============================>.] - ET
我在使用 fit_generator、predict_generator 和 evaluate_generator 时遇到了奇怪的行为,我想问以下问题,我在文档中找不到答案: 在使用 fit_gene
我在使用 ImageDataGenerator、fit_generator 和 evaluate_generator 的 keras 模型中遇到了一个非常奇怪的问题。 我正在这样创建模型: class
我是在项目中使用 keras 的新手。我一直在我的模型中使用generator。 我真的很困惑我应该输入什么值 1) In fit_generator : steps_per_epoch & vali
我的工作: 我正在使用 Keras fit_generator() 训练预训练的 CNN。这会在每个纪元之后生成评估指标(loss, acc, val_loss, val_acc)。训练模型后,我使用
我正在使用生成器来训练和预测我的数据的分类。这是 ImageDataGenerator 的示例 from keras.preprocessing.image import ImageDataGener
我是一名优秀的程序员,十分优秀!