keras Tensorflow数据增强评估:性能较低

svmlkihl  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(86)

我正在使用VGG 16解决图像分类问题。我的数据集是平衡的(每个类150个图像)我将数据集分割为三个集:train、瓦尔和test
我正在使用这种方法测试数据增强的影响,但无论我做什么,数据增强都会降低我的模型性能。
https://www.tensorflow.org/tutorials/images/data_augmentation#option_1_make_the_preprocessing_layers_part_of_your_model
以下是我的流程:

tf_train=tf.data.Dataset.from_tensor_slices((np.array(images_np_train), y_train)).batch(10)
tf_test=tf.data.Dataset.from_tensor_slices((np.array(images_np_test), y_test)).batch(10)
tf_val=tf.data.Dataset.from_tensor_slices((np.array(images_np_val), y_val)).batch(10)

def create_model_fct2() :

    IMG_SIZE = 224
    resize_and_rescale = Sequential([
        Resizing(IMG_SIZE, IMG_SIZE,input_shape=(224, 224, 3)),
      
    ])
    # Data augmentation
    data_augmentation = Sequential([
    #    RandomFlip("horizontal_and_vertical", input_shape=(224, 224, 3)),
        RandomRotation(0.2, input_shape=(224, 224, 3)),
        RandomZoom(0.1),
        Rescaling(1./255)

    ])

    model_base = VGG16(include_top=False, weights="imagenet", input_shape=(224, 224, 3))
    for layer in model_base.layers:
        layer.trainable = False


    # Définition du nouveau modèle
    model = Sequential([
        resize_and_rescale,
        data_augmentation,
        model_base,
        GlobalAveragePooling2D(),
        Dense(256, activation='relu'),
        Dropout(0.5),
        Dense(7, activation='softmax')
    ])

    # compilation du modèle
    model.build()
    model.compile(loss="categorical_crossentropy", optimizer='adam', metrics=["accuracy"])

    print(model.summary())

    return model

model4 = create_model_fct2()

model4_save_path = "./model4_best_weights.keras"
checkpoint = ModelCheckpoint(model4_save_path, monitor='val_accuracy', verbose=1, save_best_only=True, mode='max')
es = EarlyStopping(monitor='val_accuracy', mode='max', verbose=1, patience=15)
callbacks_list = [checkpoint, es]

history4 = model4.fit(tf_train,
                      validation_data=tf_val,
                      batch_size=10, epochs=100, callbacks=callbacks_list, verbose=1)

loss, accuracy = model4.evaluate(tf_test, verbose=False)
print("Test Accuracy       :  {:.4f}".format(accuracy))`

字符串
无论epoch的数量,耐心等,我的数据增强的夹带模型在我的测试数据集上的评估中表现不太好。
我有两个问题:1 -我无法解释这种性能下降。2 -评估是否排除了数据增强层?不应该吗?数据增强不应该只关注训练阶段而不是测试/验证阶段吗?
第一个月
谢谢你,谢谢

p4tfgftt

p4tfgftt1#

增强前后的数据集有多大?尝试将dropout的数量从50%更改为较小的数字(约30%),并查看这是否会提高性能,因为对于较大的数据集,模型可以很好地泛化大数据

相关问题