TensorFlow在第五次检索时失败

时间:2018-05-12 20:31:14

标签: python python-3.x tensorflow

在第五次尝试检索时,一个简单的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

2 个答案:

答案 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>