【发布时间】:2021-05-22 21:55:24
【问题描述】:
我创建了一个用于二进制分类的 CNN 模型。我使用了一个包含 300 张图像的平衡数据库。我知道这是一个小型数据库,但我使用了数据增强。拟合模型后,我在验证集上得到了 86% 的 val_accuracy,但是当我想打印每张图片的概率时,我得到第一类的大多数图片的概率 1,甚至所有概率都 > 0.5,所有概率都为 1第二课的图片。
这是我的模型:
model = keras.Sequential([
layers.InputLayer(input_shape=[128, 128, 3]),
preprocessing.Rescaling(scale=1/255),
preprocessing.RandomContrast(factor=0.10),
preprocessing.RandomFlip(mode='horizontal'),
preprocessing.RandomRotation(factor=0.10),
layers.BatchNormalization(renorm=True),
layers.Conv2D(filters=64, kernel_size=3, activation='relu', padding='same'),
layers.MaxPool2D(),
layers.BatchNormalization(renorm=True),
layers.Conv2D(filters=128, kernel_size=3, activation='relu', padding='same'),
layers.MaxPool2D(),
layers.BatchNormalization(renorm=True),
layers.Conv2D(filters=256, kernel_size=3, activation='relu', padding='same'),
layers.Conv2D(filters=256, kernel_size=3, activation='relu', padding='same'),
layers.MaxPool2D(),
layers.BatchNormalization(renorm=True),
layers.Flatten(),
layers.Dense(8, activation='relu'),
layers.Dense(1, activation='sigmoid'),])
编辑:
model.compile(
optimizer=tf.keras.optimizers.Adam(),
loss='binary_crossentropy',
metrics=['binary_accuracy'],
)
history = model.fit(
ds_train,
validation_data=ds_valid,
epochs=50,
)
谢谢。
【问题讨论】:
-
请说明你是如何编译和拟合模型的,使用了什么损失函数,你是如何得到预测的。这些细节对于人们了解已经完成的工作以及是否需要任何步骤缺失或更正非常重要。
-
@mon 完成了!我使用了 binary_crossentropy 和 binary_accuracy,因为它是一个二元分类问题
标签: python tensorflow keras computer-vision data-science