# InvalidArgumentError: GetNext() failed because the iterator has not been initialized

- **ID:** `tensorflow/invalid-argument-iterator-get-next-failed`
- **Domain:** tensorflow
- **Category:** runtime_error
- **Error Code:** `GNF`
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

A tf.data iterator was used before calling iterator.initializer, or the dataset pipeline was not initialized in eager mode.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| tensorflow 2.9.0 | active | — | — |
| tensorflow 2.11.0 | active | — | — |

## Workarounds

1. **Ensure iterator is initialized before use: for epoch in range(epochs): sess.run(iterator.initializer); while True: try: x, y = sess.run(next_element); except tf.errors.OutOfRangeError: break** (90% success)
   ```
   Ensure iterator is initialized before use: for epoch in range(epochs): sess.run(iterator.initializer); while True: try: x, y = sess.run(next_element); except tf.errors.OutOfRangeError: break
   ```
2. **Use tf.data.make_one_shot_iterator() for automatic initialization in TF1 style.** (80% success)
   ```
   Use tf.data.make_one_shot_iterator() for automatic initialization in TF1 style.
   ```

## Dead Ends

- **** — Reinitializing the iterator multiple times can cause session conflicts. (50% fail)
- **** — Changing dataset shuffle buffer size doesn't fix initialization order. (70% fail)
