NIE tensorflow runtime_error ai_generated true

未实现错误:急切模式不支持while_loop

NotImplementedError: while_loop is not supported in eager mode

ID: tensorflow/not-implemented-error-graph-mode-while-loop

其他格式: JSON · Markdown 中文 · English
78%修复率
82%置信度
1证据数
2023-10-05首次发现

版本兼容性

版本状态引入弃用备注
tensorflow 2.10.0 active
tensorflow 2.11.0 active

根因分析

在未正确追踪的tf.function内部使用tf.while_loop,或将急切执行与仅图操作混合使用。

English

Using tf.while_loop inside a tf.function that is not properly traced, or mixing eager execution with graph-only operations.

generic

官方文档

https://www.tensorflow.org/api_docs/python/tf/while_loop

解决方案

  1. Replace tf.while_loop with a Python while loop inside a tf.function that uses tf.constant for bounds:
    @tf.function
    def my_loop(n):
        i = tf.constant(0)
        while i < n:
            # loop body
            i += 1
        return i
    result = my_loop(tf.constant(5))
  2. Use tf.range and tf.map_fn for vectorized operations instead of explicit loops:
    @tf.function
    def my_fn(n):
        return tf.map_fn(lambda x: x*2, tf.range(n))
    result = my_fn(tf.constant(5))

无效尝试

常见但无效的做法:

  1. 70% 失败

    tf.function requires all loop variables to be tensors; Python objects cause tracing errors.

  2. 90% 失败

    TF2 is designed for eager mode; disabling it is not recommended and can cause compatibility issues.