在第五次尝试检索时,一个简单的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的原因吗?
Naga Vijayapuram
答案 0 :(得分:0)
通过更改此行解决了第5次尝试 -
train_dataset = train_dataset.batch(32)
对此 -
train_dataset = train_dataset.batch(1)
然而,它现在在第121次尝试失败了。
答案 1 :(得分:0)
第121次尝试失败是合乎逻辑的,因为csv文件有120行。在macOS Sierra(10.12.6)和macOS High Sierra(10.13.4)上再现了批量大小为32的第5次检索停止的问题,然后是解决方案 - 能够检索批量大小为1的所有120行。 / p>