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

调用tensorflow.linalg.eig触发UnboundLocalError错误的原因排查

tf.linalg.eig 抛出 UnboundLocalError 的原因

代码示例

import tensorflow as tf
X_tf = tf.Variable([[25, 2, 9], [5, 26, -5], [3, 7, -1]])
lambdas_X_tf, V_X_tf = tf.linalg.eig(X_tf)

报错信息

File "C:\Users\u1.conda\envs\py39\lib\site-packages\tensorflow\python\util\traceback_utils.py", line 153, in error_handler
raise e.with_traceback(filtered_tb) from None
File "C:\Users\u1.conda\envs\py39\lib\site-packages\tensorflow\python\ops\linalg_ops.py", line 406, in eig
e, v = gen_linalg_ops.eig(tensor, Tout=out_dtype, compute_v=True, name=name)
UnboundLocalError: local variable 'out_dtype' referenced before assignment

错误原因

这个错误源于你使用的TensorFlow版本存在逻辑bug:

  1. tf.linalg.eig设计要求输入张量必须是复数类型(如tf.complex64/tf.complex128),但你传入的是默认整数类型的tf.Variable。
  2. 在旧版本TensorFlow的eig函数实现中,当输入不是复数类型时,代码分支没有正确初始化out_dtype变量,就直接在调用底层算子时引用了它,最终触发UnboundLocalError。

解决办法

  • 直接将输入张量转换为复数类型:
X_tf = tf.Variable([[25, 2, 9], [5, 26, -5], [3, 7, -1]], dtype=tf.complex64)
  • 升级到TensorFlow的新版本,新版本已修复该bug,会要么自动处理类型转换,要么给出更明确的参数类型错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:22