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

TensorFlow训练数据集报错InvalidArgumentError:图执行错误排查

TensorFlow训练时InvalidArgumentError问题排查与解决

问题场景

以下是搭建的CNN模型代码:

classifier = tf.keras.models.Sequential()
classifier.add(tf.keras.layers.Conv2D(filters=32,
                                     kernel_size=3, 
                                     padding="same", 
                                     activation="relu", 
                                     input_shape=[128, 128, 1]))
classifier.add(tf.keras.layers.MaxPool2D(pool_size=2, 
                                         strides=2, 
                                         padding='valid'))
classifier.add(tf.keras.layers.Conv2D(filters=32, 
                                      kernel_size=3, 
                                      padding="same", 
                                      activation="relu"))

classifier.add(tf.keras.layers.MaxPool2D(pool_size=2, 
                                         strides=2, 
                                         padding='valid'))
classifier.add(tf.keras.layers.Flatten())
classifier.add(tf.keras.layers.Dense(units=128, 
                                     activation='relu'))
classifier.add(tf.keras.layers.Dropout(0.40))
classifier.add(tf.keras.layers.Dense(units=96, activation='relu'))
classifier.add(tf.keras.layers.Dropout(0.40))
classifier.add(tf.keras.layers.Dense(units=64, activation='relu'))
classifier.add(tf.keras.layers.Dense(units=32, activation='softmax')) # softmax for more than 2
classifier.compile(optimizer = 'adam', 
                   loss = 'categorical_crossentropy', 
                   metrics = ['accuracy'])
classifier.summary()

执行训练代码时:

classifier.fit(training_set,
                  epochs = 5,
                  validation_data = test_set)

无论是训练5轮还是20轮,均抛出InvalidArgumentError: Graph execution error: in training dataset错误。

排查与解决步骤

  • 核对输入数据与模型输入维度
    模型定义的input_shape=[128,128,1]对应128x128的单通道灰度图。需确认:

    • 数据集加载时是否指定了正确的尺寸(如image_size=(128,128))和色彩模式(如color_mode="grayscale")
    • 自定义数据集的每个样本shape是否严格为(128,128,1),避免出现RGB图(shape为(128,128,3))或尺寸不符的情况
  • 匹配标签格式与损失函数
    模型输出用softmax,损失为categorical_crossentropy,要求标签必须是独热编码格式:

    • 若标签是整数类别,要么将损失函数改为sparse_categorical_crossentropy,要么用tf.keras.utils.to_categorical()将整数标签转换为独热编码
    • 确认标签维度与输出层units=32一致,即每个标签为长度32的向量
  • 检查数据集完整性
    报错指向训练数据集,大概率存在损坏的样本:

    • 遍历数据集,通过try-except捕获加载失败的样本并移除
    • 用tf.data.experimental.cardinality(training_set)查看数据集规模,验证是否与预期一致,排除加载异常
  • 验证TensorFlow版本兼容性
    部分旧版本TensorFlow的API兼容性问题可能引发图执行错误,建议升级到稳定版本(如TensorFlow 2.15及以上),或回退到与代码兼容的版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:28:35