TensorFlow/Keras 2.11.0:保存模型时未追踪函数_update_step_xla问题咨询
问题解析与解决方案
未追踪函数说明
你看到的_update_step_xla是Adam优化器(你代码中最终使用的优化器)内部的XLA加速相关更新函数。在TensorFlow 2.11版本中,该函数属于优化器的内部实现逻辑,没有被Keras的模型追踪机制捕获,因此保存模型时会触发这个警告。
警告产生的原因
- 重复调用compile:你的代码里连续执行了两次
model.compile,第二次用Adam优化器覆盖了之前的RMSprop配置,而Adam在TF2.11中默认会触发XLA相关编译逻辑,导致未追踪函数出现。 - XLA自动启用:TF2.11在部分场景下会自动启用XLA加速优化,优化器的更新步骤会被编译为XLA版本,但这个编译后的函数未被模型追踪系统记录,保存时就会抛出警告。
解决办法
- 删除重复的compile调用:只保留一次compile配置,避免覆盖和不必要的初始化:
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) - 禁用XLA优化(如果不需要):在代码开头添加以下代码关闭XLA:
import tensorflow as tf tf.config.optimizer.set_jit(False) - 直接忽略警告:这个警告仅提示加载模型后无法直接调用该内部函数,不会影响模型的预测、继续训练等核心功能,若不影响你的使用可以忽略。
额外提示
你使用的ModelCheckpoint回调监控val_accuracy,但model.fit中未传入validation_data参数,这会导致回调无法获取验证集指标,建议补充验证集数据:
history = model.fit(tx, ty, batch_size=32, epochs=100, callbacks=callbacks, validation_data=(验证集输入, 验证集标签))
内容的提问来源于stack exchange,提问作者yefeng
相关产品推荐
相关产品推荐

