You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Keras Sequential API的CNN中添加数据增强与缩放层?

在Keras Sequential API中添加数据增强与Rescaling层的正确方式

你完全不需要单独添加Input层,只需要把数据增强、Rescaling层按顺序堆叠在卷积层之前,同时移除卷积层的input_shape定义,并在模型的第一个可指定输入形状的位置(要么模型初始化时,要么第一个预处理层)明确输入形状即可。以下是两种可行的实现方式:

方式一:在Sequential初始化时指定输入形状

image_size = (32, 32)
# 独立定义数据增强序列
data_augmentation = keras.Sequential(
    [
        layers.experimental.preprocessing.RandomFlip(),
        layers.experimental.preprocessing.RandomRotation(0.25),
        layers.experimental.preprocessing.RandomZoom(0.25),
    ]
)

# 构建主模型
model_seq = tf.keras.models.Sequential(
    [
        data_augmentation,
        layers.Rescaling(1. / 255),
        layers.Conv2D(32, 3, padding='valid', name='conv_1')
    ],
    input_shape=image_size + (3,)  # 在这里统一指定输入形状
)

方式二:在第一个预处理层中指定输入形状

image_size = (32, 32)
data_augmentation = keras.Sequential(
    [
        layers.experimental.preprocessing.RandomFlip(),
        layers.experimental.preprocessing.RandomRotation(0.25),
        layers.experimental.preprocessing.RandomZoom(0.25),
    ]
)

model_seq = tf.keras.models.Sequential([
    data_augmentation,
    # 在Rescaling层指定输入形状
    layers.Rescaling(1. / 255, input_shape=image_size + (3,)),
    layers.Conv2D(32, 3, padding='valid', name='conv_1')
])

关键说明

  • Sequential是线性层堆叠结构,只要第一个层(或模型初始化时)明确了输入形状,后续所有层都会自动推断输入维度,无需重复指定。
  • 你之前定义的独立数据增强序列可以直接作为一个完整的层加入主Sequential模型,无需拆分内部的翻转、旋转等操作。

内容的提问来源于stack exchange,提问作者Kaikus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:27:23