【发布时间】:2021-08-29 21:29:47
【问题描述】:
我正在使用 DenseNet 在 Keras 中进行二进制分类。
创建的加权类:
# Assign weights
weight_for_0 = num_normal/(num_normal + num_covid)
weight_for_1 = num_covid/(num_normal + num_covid)
class_weight = {0: weight_for_0, 1: weight_for_1}
# Print
print(f"Weight for class 0: {weight_for_0:.2f}")
print(f"Weight for class 1: {weight_for_1:.2f}")
结果,我有
Weight for class 0: 0.74
Weight for class 1: 0.26
我为模型拟合了class_weight
history_dense201_weighted = model_dense_201.fit_generator(train_generator, epochs = 20,
validation_data = valid_generator, class_weight = class_weight, callbacks = [# mcp_save,
early_stopping, tensorboard_callback])
但是当我想评估模型时,我不确定如何评估加权模型,因为class_weight 是历史的一部分。
如何更新此代码,使用加权模型而不是默认的model_dense_201 模型?
# Evaluation
evaluation = model_dense_201.evaluate(valid_generator)
print(f"Validation Accuracy: {evaluation[1] * 100:.2f}%")
evaluation = model_dense_201.evaluate(train_generator)
print(f"Train Accuracy: {evaluation[1] * 100:.2f}%")
【问题讨论】:
-
我不知道你为什么把它弄得这么复杂,model.evaluate 还需要一个样本权重参数,你可以从中实现类权重。
-
谢谢,有什么例子吗?试图找到并且不知道如何正确地做到这一点。
标签: python keras transfer-learning weighted densenet