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

TensorFlow 2.5.0与NumPy 1.21+不兼容导致Keras数据增强报错问询

错误原因

该报错并非代码编写错误导致,是TensorFlow与NumPy版本不兼容引发的问题。你当前使用的TensorFlow 2.5.0仅适配1.19.x版本的NumPy,NumPy 1.20及以上版本对Tensor类型的处理逻辑做了调整,与2.5及更早版本TensorFlow内置的Keras预处理层存在适配冲突。Google Colab可正常运行是因为其默认环境的TensorFlow、NumPy为官方测试过的匹配组合,不存在版本不兼容问题。

解决方案

你可根据自身需求选择任意一种方案解决:

  • 方案1:降级NumPy到兼容版本
    直接执行以下命令安装1.19.5版本NumPy,安装完成后重启运行环境即可,原有代码无需修改:
    pip install numpy==1.19.5
    
  • 方案2:升级TensorFlow到适配高版本NumPy的版本
    TensorFlow 2.6及以上稳定版本已修复与NumPy 1.20+的兼容问题,直接升级TensorFlow即可,你现有代码用到的API无破坏性变更,升级后可直接运行:
    pip install tensorflow==2.10.0
    
  • 方案3:不改动现有环境,调整数据增强实现逻辑
    若不想修改现有环境的依赖版本,可将数据增强逻辑从Keras模型中抽离,放到tf.data.Dataset的预处理流水线中实现,调整后原模型可删除嵌入的data_augmentation层,绕开版本兼容问题,示例代码如下:
    import tensorflow as tf
    import tensorflow_addons as tfa
    import numpy as np
    
    def augment_func(image, label):
        # 随机水平翻转
        image = tf.image.random_flip_left_right(image)
        # 随机±15度旋转
        rotate_angle = tf.random.uniform(shape=[], minval=-15, maxval=15, dtype=tf.float32)
        image = tfa.image.rotate(image, rotate_angle * np.pi / 180, interpolation='bilinear')
        return image, label
    
    # 仅对训练集做增强,验证集保持原有处理逻辑
    augmented_train_ds = normalized_train_ds.map(augment_func, num_parallel_calls=tf.data.AUTOTUNE)
    
    # 训练时传入增强后的数据集
    history_2 = model_2.fit(
        augmented_train_ds,
        validation_data = normalized_val_ds,
        epochs = epochs_2
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:27:03