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

Keras Sequential模型添加预处理层时功能异常问题咨询

Keras预处理层嵌套后随机旋转失效问题

复现流程

  • 第一步:导入依赖、加载CIFAR10数据集并完成归一化、标签独热编码处理,构建包含RandomRotation层的Sequential预处理模型DA,代码如下:
import tensorflow.keras as keras
from keras.datasets import cifar10
from keras.models import Sequential
from keras.layers import Dropout, RandomRotation
from tensorflow.keras.utils import set_random_seed; set_random_seed(72)
import matplotlib.pyplot as plt

(ax, ay), (qx, qy) = cifar10.load_data()
ay = keras.utils.to_categorical(ay, 10)
qy = keras.utils.to_categorical(qy, 10)
ax = ax.astype('float32'); ax /= 255
qx = qx.astype('float32'); qx /= 255

DA = Sequential([
    RandomRotation(
        180/360,
        fill_mode="nearest",
        interpolation="bilinear",
        input_shape=(32, 32, 3)
    )
])  
  • 第二步:取数据集第一张原图展示,再调用DA模型处理后展示结果,代码如下:
X = ax[0:1,:,:,:]
plt.imshow(X[0])
plt.show()

transformedX = DA(X).numpy()
plt.imshow(transformedX[0,:,:,:])
plt.show()

该阶段运行结果符合预期,图像成功添加随机旋转效果。

  • 第三步:将DA模型作为层加入新的Sequential模型,新模型仅包含DA和Dropout(0.25)两层,代码如下:
model = Sequential()
model.add(DA)
model.add(Dropout(0.25))
  • 第四步:全程不调用新创建的model,完全复用第二步的代码再次展示原图和DA处理后的输出。
    该阶段出现异常:DA输出的图像和原图完全一致,没有任何随机旋转效果。

额外观测现象

  • 本地Spyder环境、Google Colab环境均可稳定复现该问题。
  • 问题触发后,后续重复运行代码,DA层始终输出原图,仅在Colab中重启实例后运行可再次复现完整流程;本地环境执行%reset命令无法重置状态复现问题。
  • 若移除RandomRotation层中input_shape=(32, 32, 3)的配置,该问题不会出现,但常规认知中Keras Sequential模型的首层需要指定input_shape参数。

待确认问题

  • 该现象是Keras/TensorFlow框架本身的原生Bug,还是代码编写存在不符合框架规范的错误?
  • 若属于框架Bug,是否为特定旧版本Keras/TensorFlow独有的问题?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:21:33