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

TensorFlow报错TypeError: Expected float32, but got auto of type 'str'如何解决

报错原因

问题出在model.compile的损失函数配置环节:你直接传入了tf.keras.losses.SparseCategoricalCrossentropy类本身,没有完成实例化,导致Keras解析参数时出现类型匹配错误。

修复方案

两种可用修复方式,按需选择即可:

  • 方案1:实例化损失类(适合需要自定义损失参数的场景,比如修改reduction策略、设置from_logits等)
    将compile代码修改为:
model.compile(
    loss = tf.keras.losses.SparseCategoricalCrossentropy(),
    optimizer = tf.keras.optimizers.Adam(learning_rate=0.0001),
    metrics = ['accuracy']
)

补充说明:你当前输出层已经配置了softmax激活,损失默认的from_logits=False参数刚好匹配,无需额外调整。如果输出层未加softmax,可将实例化代码改为tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),数值稳定性更好。

  • 方案2:使用字符串形式指定损失(无需自定义参数时更简洁)
    直接用Keras内置的损失名称字符串即可:
model.compile(
    loss = 'sparse_categorical_crossentropy',
    optimizer = tf.keras.optimizers.Adam(learning_rate=0.0001),
    metrics = ['accuracy']
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:54:06