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

Google Colab运行TensorFlow训练时报错:无法将0.5625转为int64类型EagerTensor

错误原因

你传入model.fit的steps_per_epoch和validation_steps参数为浮点数类型,而TensorFlow要求这两个参数必须为整数,当存在小数部分时无法自动转换为int64类型的EagerTensor,因此触发报错。
你代码中直接使用/做除法运算,默认返回浮点数,只要样本数不能被batch_size整除,就会产生带小数的结果,进而触发该异常。

解决方案

有两种可选修改方式:

方案1:向下取整(丢弃最后不足一个batch的样本)

使用整数除法运算符//替代普通除法/,自动取整得到整数结果,修改训练代码如下:

model.fit(
    train_it,
    validation_data=valid_it,
    steps_per_epoch=train_it.samples // train_it.batch_size,
    validation_steps=valid_it.samples // valid_it.batch_size,
    epochs=10
)

方案2:向上取整(保留最后不足一个batch的样本)

如果需要把所有样本都纳入训练和验证流程,可以使用math.ceil对除法结果向上取整后转为整数:
首先导入math模块:

import math

再修改model.fit的对应参数:

model.fit(
    train_it,
    validation_data=valid_it,
    steps_per_epoch=math.ceil(train_it.samples / train_it.batch_size),
    validation_steps=math.ceil(valid_it.samples / valid_it.batch_size),
    epochs=10
)

注:你之前只修改validation_steps没有解决问题,是因为steps_per_epoch参数同样存在浮点数问题,两个参数都需要修改为整数类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:36:03