如何优化我的 CNN 分类架构

问题描述 投票:0回答:1

我有一个基于 CNN 的模型架构,它获取 RGB 图像并将其分类为花/无花情况。现在我尝试将其更改为对象的 10 级颜色分类(白色、黑色、黄色等)。当前的架构对于原始任务已经实现了良好的准确性,但我认为对于颜色情况,它不需要这么复杂。所以尝试缩小它并使其更快。

你会如何改变它以使其更小更快?任何诸如减少层、过滤器、内核大小、函数等的东西

def create_model():
    channels = 3 
    model = Sequential()
    #change first one to 64
    model.add(Conv2D(16, kernel_size = (3, 3), activation='relu', input_shape=(IMAGE_SIZE, IMAGE_SIZE, channels)))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(BatchNormalization())
    model.add(Conv2D(32, kernel_size=(3,3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(BatchNormalization())
    model.add(Conv2D(64, kernel_size=(3,3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(BatchNormalization())
    model.add(Conv2D(128, kernel_size=(3,3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(BatchNormalization())
    
    model.add(Conv2D(32, kernel_size=(3,3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(BatchNormalization())
    model.add(Dropout(0.2))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(64, activation='relu'))
    model.add(Dense(4, activation = 'softmax'))
    
    return model
python tensorflow keras deep-learning classification
1个回答
0
投票

一种常见的方法是从简单的架构开始。当且仅当过度拟合得到控制时,您才可以开始添加其他卷积池层等。 我会从以下内容开始:

  model = tf.keras.models.Sequential([
      tf.keras.layers.Conv2D(32, (3, 3), activation="relu", input_shape=(IMAGE_SIZE, IMAGE_SIZE, CHANNELS)),
      tf.keras.layers.MaxPooling2D(2, 2),
      tf.keras.layers.Conv2D(64, (3, 3), activation="relu"),
      tf.keras.layers.MaxPooling2D(2, 2),
      tf.keras.layers.Flatten(),
      tf.keras.layers.Dropout(0.5),
      tf.keras.layers.Dense(128, activation="relu"),
      tf.keras.layers.Dense(4, activation="softmax"),
  ])

您需要执行多次实验,我强烈建议使用

mlflow
等工具来跟踪您的超参数值。

工具箱中的另一个工具是迁移学习。您可以利用预先训练的模型(例如

InceptionV3
中提供的
keras
),而不是从头开始构建架构,方法是冻结所有层(即不可训练层)并在其顶部添加一个您可以使用的密集层。真的会训练。

© www.soinside.com 2019 - 2024. All rights reserved.