REI tensorflow resource_error ai_generated true

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

ResourceExhaustedError: Failed to get next element from iterator: Out of memory while reading data

ID: tensorflow/resource-exhausted-iterator-get-next

其他格式: JSON · Markdown 中文 · English
82%修复率
86%置信度
1证据数
2024-06-18首次发现

版本兼容性

版本状态引入弃用备注
tensorflow 2.13.0 active — — —
tensorflow 2.14.0 active — — —

根因分析

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

English

Data pipeline prefetching consumes too much memory, often due to large batch size, large dataset elements, or infinite prefetch.

generic

官方文档

https://www.tensorflow.org/api_docs/python/tf/data/Dataset#prefetch

解决方案

  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)

无效尝试

常见但无效的做法:

  1. 70% 失败

    Memory is consumed by prefetch buffer, not worker count.

  2. 90% 失败

    The error is about TensorFlow's internal buffer limits, not system memory capacity.