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

VGG16迁移学习运行model.fit时出现NumPy数组转Tensor错误排查

错误原因与修复方案

你遇到的ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type int)报错,核心原因是输入/标签的数据类型不符合Tensor要求,结合你给出的代码,具体问题和修复方法如下:

  • 标签数据类型错误
    你的Sex列是字符串类型(值为female/male),使用class_mode="raw"时生成器会直接返回原始值,字符串无法转换为Tensor,同时不同标签列的int/字符串混合类型也会触发类型不兼容报错。
    修复代码:
    # 性别列数值编码
    training_dataframe['Sex'] = training_dataframe['Sex'].map({'female': 0, 'male': 1})
    validation_dataframe['Sex'] = validation_dataframe['Sex'].map({'female': 0, 'male': 1})
    # 统一标签列为float32类型,适配Tensor输入要求
    training_dataframe[['Sex', 'Weight']] = training_dataframe[['Sex', 'Weight']].astype('float32')
    validation_dataframe[['Sex', 'Weight']] = validation_dataframe[['Sex', 'Weight']].astype('float32')
    
  • 列名大小写不匹配
    你的DataFrame中存储文件名的列名为大写的File,但flow_from_dataframe中x_col参数写为小写的file,会导致生成器读取不到有效文件路径,返回空值/对象类型值触发报错,修改对应参数即可:
    # 两个生成器的x_col都修改为大写的File
    train_generator=train_datagen.flow_from_dataframe(
        # 其余参数不变
        x_col="File",
        # 其余参数不变
    )
    valid_generator=test_datagen.flow_from_dataframe(
        # 其余参数不变
        x_col="File",
        # 其余参数不变
    )
    
  • 可选的模型适配优化
    性别已经编码为0/1的单值标签,输出层无需设置2个节点,调整为1个节点即可避免后续维度不匹配问题:
    predict_sex = Dense(1, activation='sigmoid')(sex_model)
    

修复后重新运行训练代码即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:45:03