# FailedPreconditionError: GetNext() 失败，因为迭代器尚未初始化

- **ID:** `tensorflow/iterator-get-next-failed-precondition`
- **领域:** tensorflow
- **类别:** runtime_error
- **错误码:** `FPRECOND`
- **验证级别:** ai_generated
- **修复率:** 90%

## 根因

tf.data 迭代器在使用前未初始化，常见于 TF1 风格代码或错误使用 tf.compat.v1.data.make_one_shot_iterator。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| tensorflow 2.10 | active | — | — |
| tensorflow 2.11 | active | — | — |
| tensorflow 2.12 | active | — | — |

## 解决方案

1. ```
   Initialize the iterator explicitly before fetching: iterator = dataset.make_initializable_iterator(); sess.run(iterator.initializer); then sess.run(get_next).
   ```
2. ```
   Switch to TF2-style eager iteration: for batch in dataset: ... instead of using iterators.
   ```

## 无效尝试

- **** — The iterator still lacks initialization; only a fresh session restart is attempted. (95% 失败率)
- **** — The initialization must happen before any get_next call, not after. (85% 失败率)
