# 资源耗尽错误：从迭代器获取下一个元素失败：读取数据时内存不足

- **ID:** `tensorflow/resource-exhausted-iterator-get-next`
- **领域:** tensorflow
- **类别:** resource_error
- **错误码:** `REI`
- **验证级别:** ai_generated
- **修复率:** 82%

## 根因

数据管道预取消耗过多内存，通常由于批大小过大、数据集元素过大或无限预取导致。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| tensorflow 2.13.0 | active | — | — |
| tensorflow 2.14.0 | active | — | — |

## 解决方案

1. ```
   Limit the prefetch buffer size using tf.data.Dataset.prefetch with a specific buffer size:
dataset = dataset.batch(32).prefetch(buffer_size=tf.data.AUTOTUNE)
# Or manually set buffer_size to a small number like 1 or 2
# Alternatively, use .prefetch(1) to limit to one batch
   ```
2. ```
   Reduce batch size to lower memory usage per element:
dataset = dataset.batch(16).prefetch(tf.data.AUTOTUNE)
# Or use smaller batch size like 8
   ```
3. ```
   Use tf.data.Dataset.cache to avoid re-reading large files, combined with controlled prefetch:
dataset = dataset.cache().batch(32).prefetch(1)
   ```

## 无效尝试

- **** — Memory is consumed by prefetch buffer, not worker count. (70% 失败率)
- **** — The error is about TensorFlow's internal buffer limits, not system memory capacity. (90% 失败率)
