【发布时间】:2018-05-18 13:32:05
【问题描述】:
我正在使用数据集 api 从 tfrecords 中读取数据。我正在使用以下代码将字符串数据转换为虚拟数据。
SFR1 = tf.feature_column.indicator_column(
tf.feature_column.categorical_column_with_vocabulary_list("SFR1 ",
vocabulary_list=("1", "2")))
但是当我运行我的代码时,tensorflow 会抛出以下错误。
tensorflow.python.framework.errors_impl.FailedPreconditionError: 表 已经初始化。 [[节点: 生成器/input_layer/SFR1 _indicator/SFR1 _lookup/hash_table/table_init = InitializeTableV2[Tkey=DT_STRING, Tval=DT_INT64](Generator/input_layer/SFR1 _indicator/SFR1 _lookup/hash_table, 生成器/input_layer/SFR1 _indicator/SFR1 _lookup/Const, 生成器/input_layer/SFR1 _indicator/SFR1 _lookup/ToInt64)]] [[节点:Generator2/IteratorGetNext = IteratorGetNextoutput_shapes=[[?,10000,160]], output_types=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"]]
我尝试了多种组合来确定问题的根源。我知道当模型同时包含tf.feature_column.categorical_column_with_vocabulary_list 和dataset api 时会出现此问题。如果我选择TFRecordReader 而不是dataset,代码正在运行。
当我搜索 stackoverflow 时,我注意到有一个类似的问题。我在下面添加问题链接。由于两个问题相同,我没有复制所有代码。下面的链接包含足够的数据来解释我的问题
Tensorflow feature columns in Dataset map Table already initialized issue
谢谢。
【问题讨论】:
-
我刚刚给了a potential answer to that similar question。如果您在迭代数据集后可以在 TFRecord 中解析示例,请查看。
-
感谢您的回答。我在我的示例中检查了您的解决方案。它正在工作,但我怎样才能并行运行?并行化参数在 map 函数中。我还有一个问题。 read_up_to 是读取 tfrecords 的快速方法。数据集中有像“read_up_to”这样的解决方案吗?
-
对不起,我真的不知道如何在地图中使用
tf.feature_column。我认为这不会是直截了当的,因为地图有自己的图表,独立于“主”图表。我认为这里的一个想法是您正在逐批解析和转换/预处理数据。因此,您可能能够以类似于进行分布式训练的方式使用一些并行性。我确实意识到这可能无法满足您的需求。
标签: python-3.x tensorflow tensorflow-datasets