keras 中 model.compile 的参数 'weighted_metrics' 和 model.fit_generator 的参数 'class_weight' 之间的区别?
Difference between model.compile's parameter 'weighted_metrics' and model.fit_generator's parameter 'class_weight' in keras?
在为图像 classification(120 classes 来自 DOG BREED IDENTIFICATION 数据集,KAGGLE)训练 keras 模型时,我需要使用 [=22=22=]es 来平衡 classes =] 我在某处读到的权重,在示例中我看到人们使用 fit_generator 的参数 class_weight。但是我在model.compile中发现了另一个参数,weighted_metrics在文档中的描述是:'List of metrics to be evaluated and weighted by sample_weight or class_weight during training and testing'。我要用这个吗?请举例说明此参数的用途。
#Calculating Class weights
counter = Counter(train_generator.classes)
max_value = float(max(counter.values()))
CLASS_WEIGHTS = {classid: max_value / num_occurences
for classid, num_occurences in counter.items()}
# Model Compile
model.compile(optimizer=Adam(lr=LR),
loss=categorical_crossentropy,
metrics=[categorical_accuracy],
weighted_metrics=None) # <--------------- This parameter
STEPS_PER_EPOCH = train_generator.n//train_generator.batch_size
VAL_STEPS = val_generator.n//val_generator.batch_size
model.fit_generator(train_generator,
steps_per_epoch=STEPS_PER_EPOCH,
epochs=EPOCHS,
callbacks=callback_list,
verbose=1,
class_weight=CLASS_WEIGHTS,
validation_data=val_generator,
validation_steps=VAL_STEPS) # USED CLASS_WEIGHTS HERE
是的,您可以将它们用于不平衡数据集。
weighted_metrics
是一个指标列表,其中考虑了
class_weights
你传入 fit_generator.
因此在您的示例中,您可以设置
weighted_metrics=['accuracy']
和
class_weight = {0 : 3, 1: 4}
weighted_metrics 参数的目的是提供一个指标列表,这些指标将考虑您在 fit_generator 中传递的 class_weights。
在为图像 classification(120 classes 来自 DOG BREED IDENTIFICATION 数据集,KAGGLE)训练 keras 模型时,我需要使用 [=22=22=]es 来平衡 classes =] 我在某处读到的权重,在示例中我看到人们使用 fit_generator 的参数 class_weight。但是我在model.compile中发现了另一个参数,weighted_metrics在文档中的描述是:'List of metrics to be evaluated and weighted by sample_weight or class_weight during training and testing'。我要用这个吗?请举例说明此参数的用途。
#Calculating Class weights
counter = Counter(train_generator.classes)
max_value = float(max(counter.values()))
CLASS_WEIGHTS = {classid: max_value / num_occurences
for classid, num_occurences in counter.items()}
# Model Compile
model.compile(optimizer=Adam(lr=LR),
loss=categorical_crossentropy,
metrics=[categorical_accuracy],
weighted_metrics=None) # <--------------- This parameter
STEPS_PER_EPOCH = train_generator.n//train_generator.batch_size
VAL_STEPS = val_generator.n//val_generator.batch_size
model.fit_generator(train_generator,
steps_per_epoch=STEPS_PER_EPOCH,
epochs=EPOCHS,
callbacks=callback_list,
verbose=1,
class_weight=CLASS_WEIGHTS,
validation_data=val_generator,
validation_steps=VAL_STEPS) # USED CLASS_WEIGHTS HERE
是的,您可以将它们用于不平衡数据集。
weighted_metrics
是一个指标列表,其中考虑了
class_weights
你传入 fit_generator.
因此在您的示例中,您可以设置
weighted_metrics=['accuracy']
和
class_weight = {0 : 3, 1: 4}
weighted_metrics 参数的目的是提供一个指标列表,这些指标将考虑您在 fit_generator 中传递的 class_weights。