2301_77940538 2024-09-18 01:06 采纳率: 0%
浏览 4

关于图像分类中,训练集高,验证集精度低的问题

图像分类任务,训练精度一直很高,验证精度就低得离谱,降低模型复杂度,加上Dropout还是没起作用,检查了数据集的标签啥的也没有错,用预训练模型检查了下,发现还是有错误


```python
import keras
import pandas as pd
from keras_preprocessing.image import ImageDataGenerator
from keras.optimizers import Adam
from pathlib import Path
import os.path
from keras import layers

TARGET_SIZE = (224,224)
BATCH_SIZE = 32

dataset = "./train"
image_dir = Path(dataset)
filepaths = list(image_dir.glob(r'**/*.jpg'))
labels = list(map(lambda x: os.path.split(os.path.split(x)[0])[1], filepaths))
filepaths = pd.Series(filepaths, name='Filepath').astype(str)
labels = pd.Series(labels, name='Label')  # 得到路径对应标签
train_df = pd.concat([filepaths, labels], axis=1)

train_generator = ImageDataGenerator(
    rescale=1./255,  
    validation_split=0.2
)

train_images = train_generator.flow_from_dataframe(
    dataframe=train_df,
    x_col='Filepath',
    y_col='Label',
    target_size=TARGET_SIZE,
    color_mode='rgb',
    class_mode='categorical',
    batch_size=BATCH_SIZE,
    shuffle=True,
    seed=42,
    subset='training'
)

val_images = train_generator.flow_from_dataframe(
    dataframe=train_df,
    x_col='Filepath',
    y_col='Label',
    target_size=TARGET_SIZE,
    color_mode='rgb',
    class_mode='categorical',
    batch_size=BATCH_SIZE,
    shuffle=True,
    seed=42,
    subset='validation'
)

model = keras.Sequential([
    layers.Conv2D(16, kernel_size=(3, 3), activation='relu', input_shape=(224, 224, 3)),
    layers.MaxPooling2D(pool_size=(2, 2)),

    layers.Conv2D(16, kernel_size=(3, 3), activation='relu'),
    layers.MaxPooling2D(pool_size=(2, 2)),
    
    layers.Flatten(),
    
    layers.Dense(32, activation='relu'),
    
    layers.Dense(25, activation='softmax')
])

model.compile(
    optimizer=Adam(0.0001),
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

history = model.fit(
    train_images,
    steps_per_epoch=len(train_images),
    validation_data=val_images,
    validation_steps=len(val_images),
    epochs=10
)

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/49080867abcf496c9e92a77d429549ba.png "#left")


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/45257ae53dd14fdcb462751b6be7e467.png "#left")



  • 写回答

1条回答 默认 最新

  • 语文天才高斯 2024-09-18 09:13
    关注

    过拟合,加上batchnormalize,权重L2正则化,或者增大卷积核试试

    评论

报告相同问题?

问题事件

  • 创建了问题 9月18日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见