TensorFlow Add操作类型不匹配报错求助:tf.cast无效
解决TensorFlow中Add操作的类型不匹配问题
从你的报错信息和代码来看,核心问题出在sum=tf.add(sum,overate)这一行:sum变量的初始类型是int32,而overate是float32类型,两者类型不匹配导致了TypeError。你之前只校验了re/re2等中间变量的类型,却忽略了sum的初始值类型。
具体解决方案:
方案1:初始化sum为float32类型
如果你是直接用sum = 0或者sum = tf.constant(0)初始化的,把它改成float32类型的初始值:sum = tf.constant(0.0, dtype=tf.float32)这样后续和float32类型的
overate相加时就不会有类型冲突了。方案2:相加时显式转换类型
如果你暂时不想修改sum的初始值,可以在相加操作中把sum转成float32:sum = tf.add(tf.cast(sum, tf.float32), overate)方案3:统一所有输入张量的类型
检查fc4和bbox这两个输入张量的类型,如果它们是int32的话,先在计算前转成float32:fc4 = tf.cast(fc4, tf.float32) bbox = tf.cast(bbox, tf.float32)这样所有基于它们计算出的
re/re2/overate都会保持float32类型,从根源避免类型问题。
额外提示:
你可以在初始化sum之后打印它的类型,确认是否符合预期:
print("sum dtype:", sum.dtype)
内容的提问来源于stack exchange,提问作者stmsx
相关产品推荐
相关产品推荐

