Простая программа TensorFlow постоянно терпит неудачу с пятой попытки получить.
Вот программа -
#!/usr/bin/env python3
from __future__ import absolute_import, division, print_function
import sys
import tensorflow as tf
from utils import parse_csv
tf.enable_eager_execution()
train_dataset = tf.data.TextLineDataset("iris_training.csv")
# skip the first header row
train_dataset = train_dataset.skip(1)
# parse each row
train_dataset = train_dataset.map(parse_csv)
# randomize
train_dataset = train_dataset.shuffle(buffer_size=1000)
# batch
train_dataset = train_dataset.batch(32)
# iterator
iter = iter(train_dataset)
# View few entries from the batch
print()
for i in range(0, int(sys.argv[1])):
features, label = iter.next()
print("=> features:", features[0])
print("=> label:", label[0])
print()
Вот результат программы для пяти попыток -
./tensor.py 5 2>&1 | tail -5
File "./tensor.py", line 33, in <module>
features, label = iter.next()
File "/Users/nv/.pyenv/versions/3.6.5/lib/python3.6/site-packages/tensorflow/python/data/ops/iterator_ops.py", line 519, in next
raise StopIteration
StopIteration
Есть идеи, почему я сталкиваюсь с StopIteration?
Нага Виджаяпурам






Решено для 5-й попытки, изменив эту строку -
train_dataset = train_dataset.batch(32)
К этому -
train_dataset = train_dataset.batch(1)
Однако сейчас со 121-й попыткой он терпит неудачу.
Ошибка при 121-й попытке логична, так как файл csv имеет 120 строк. Воспроизведена проблема остановки при 5-м извлечении с размером пакета 32 как на macOS Sierra (10.12.6), так и на macOS High Sierra (10.13.4), а затем решение - возможность получить все 120 строк с размером пакета 1.