cnn二值分类模型,86%的值精度总是返回1

n9vozmp4  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(293)

我创建了一个cnn模型来分类一辆车是否完全失事。我使用了一个平衡的数据库,248个用于培训,76个用于验证。我知道这是一个小数据库,但我使用了数据扩充。在对模型进行拟合之后,我在验证集上得到了86%的val\ U准确率,但是当我想使用make\ U预测函数(请查找下面的代码)打印每张图片的概率时,我得到了大多数完全失事汽车图片的概率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'),])

这是精确图

这是make预测函数的结果:

def make_predictions(image_path):
preds=[]
for img in os.listdir(image_path):
    image = image_utils.load_img(image_path+img, target_size=(128,128))
    image = image_utils.img_to_array(image)
    image = image.reshape(1,128,128,3)
    image = preprocess_input(image)
    preds.append(model.predict(image))
return preds

[


谢谢你们

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题