Tensorflow RuntimeError:\uuuuIter\uuuuuu()仅在tf.function内部或启用了急切执行时受支持
我是tensorflow的新手,正在努力学习它。尝试在Tensorflow 2.2.0中运行估算器线性分类器Tensorflow RuntimeError:\uuuuIter\uuuuuu()仅在tf.function内部或启用了急切执行时受支持,tensorflow,tensorflow2.0,tensorflow-datasets,Tensorflow,Tensorflow2.0,Tensorflow Datasets,我是tensorflow的新手,正在努力学习它。尝试在Tensorflow 2.2.0中运行估算器线性分类器 导入所有模块并读入TFR记录 定义解析函数 定义要传入估计器的输入函数 初始化估计器 运行以下代码会出现错误: Traceback (most recent call last): File "linear_classification.py", line 42, in <module> input_fn = input_fn File &
Traceback (most recent call last):
File "linear_classification.py", line 42, in <module>
input_fn = input_fn
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 349, in train
loss = self._train_model(input_fn, hooks, saving_listeners)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1182, in _train_model
return self._train_model_default(input_fn, hooks, saving_listeners)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1208, in _train_model_default
self._get_features_and_labels_from_input_fn(input_fn, ModeKeys.TRAIN))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1044, in _get_features_and_labels_from_input_fn
self._call_input_fn(input_fn, mode))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1137, in _call_input_fn
return input_fn(**kwargs)
File "linear_classification.py", line 31, in input_fn
iterator = iter(dataset)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 406, in __iter__
raise RuntimeError("__iter__() is only supported inside of tf.function "
RuntimeError: __iter__() is only supported inside of tf.function or when eager execution is enabled.
这是我的第一个StackOverflow问题,如果我没有遵循任何指导原则或规则,请原谅。非常感谢您的帮助。谢谢。所以我发现问题是。错误状态为
RuntimeError:\uuuu iter\uuuu()仅在tf.function内部受支持,或者在启用了急切执行时受支持
。我将@tf.function
放在我的input\u fn()上方。因此,现在我的input\u fn()
如下所示:
@tf.function
def input_fn():
dataset = tf.data.TFRecordDataset(filenames = filenames)
dataset = dataset.map(_parse_function)
iterator = iter(dataset)
next_element = iterator.get_next()
return next_element
通过阅读TensorFlow文档,我能够跟踪问题:
def input_fn():
dataset = tf.data.TFRecordDataset(filenames = filenames)
dataset = dataset.map(_parse_function)
iterator = iter(dataset)
next_element = iterator.get_next()
return next_element
feature_columns = [
tf.feature_column.numeric_column('Age'),
tf.feature_column.numeric_column('EstimatedSalary')
]
estimator = tf.estimator.LinearClassifier(feature_columns = feature_columns)
estimator.train(
input_fn = input_fn
)
Traceback (most recent call last):
File "linear_classification.py", line 42, in <module>
input_fn = input_fn
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 349, in train
loss = self._train_model(input_fn, hooks, saving_listeners)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1182, in _train_model
return self._train_model_default(input_fn, hooks, saving_listeners)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1208, in _train_model_default
self._get_features_and_labels_from_input_fn(input_fn, ModeKeys.TRAIN))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1044, in _get_features_and_labels_from_input_fn
self._call_input_fn(input_fn, mode))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1137, in _call_input_fn
return input_fn(**kwargs)
File "linear_classification.py", line 31, in input_fn
iterator = iter(dataset)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/data/ops/dataset_ops.py", line 406, in __iter__
raise RuntimeError("__iter__() is only supported inside of tf.function "
RuntimeError: __iter__() is only supported inside of tf.function or when eager execution is enabled.
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tensorflow/python/data/ops/dataset_ops.py
@tf.function
def input_fn():
dataset = tf.data.TFRecordDataset(filenames = filenames)
dataset = dataset.map(_parse_function)
iterator = iter(dataset)
next_element = iterator.get_next()
return next_element