Colab运行TensorFlow DNN训练CLV模型报错ValueError: Expect x to be non-empty
问题排查与解决步骤
- 第一步:校验输入数据集的基本信息
运行以下代码确认数据集维度匹配、无空值:
重点确认X_train和y_train的第一维数值完全一致,且都大于0。print("X_train维度:", X_train.shape) print("y_train维度:", y_train.shape) print("X_train是否存在空值:", X_train.isnull().any().any()) print("y_train是否存在空值:", y_train.isnull().any()) - 第二步:统一输入数据格式
低版本Keras对pandas DataFrame输入的解析存在兼容问题,建议手动转换为numpy数组后传入fit方法,修改对应代码为:
测试阶段可以先去掉回调参数,验证基础训练逻辑是否正常:early_history = model.fit(X_train.values, y_train.values, epochs=EPOCHS, validation_split = 0.2, verbose=0, callbacks=[early_stop, tfdocs.modeling.EpochDots()])# 最简测试代码 model = build_model() test_history = model.fit(X_train.values, y_train.values, epochs=2, validation_split=0.2) - 第三步:核对数据集拆分逻辑
确认此前拆分训练集、测试集的代码没有参数错误,比如train_test_split的test_size参数是否设置过大、是否误将测试集赋值给了X_train变量。 - 第四步:确认模型输入形状和数据集匹配
运行以下代码核对输入特征数是否一致:
两者必须完全相等,如果你在定义模型后修改过X_train的特征,需要重新运行print("模型定义的输入特征数:", len(X_train.columns)) print("实际X_train的特征数:", X_train.shape[1])build_model()生成新的模型再训练。 - 第五步:排查框架版本兼容问题
打印TensorFlow版本确认版本稳定性:
如果你使用的是2.0以下的旧版本,建议升级到2.7~2.15之间的稳定版,避免框架本身的bug。import tensorflow as tf print(tf.__version__)
内容的提问来源于stack exchange,提问作者timmy
相关产品推荐
相关产品推荐

