Python 3.x FailedPremissionError:表已初始化

Python 3.x FailedPremissionError:表已初始化,python-3.x,tensorflow,tensorflow-datasets,Python 3.x,Tensorflow,Tensorflow Datasets,我正在使用dataset api从tfrecords读取数据。我正在使用以下代码将字符串数据转换为伪数据 SFR1 = tf.feature_column.indicator_column( tf.feature_column.categorical_column_with_vocabulary_list("SFR1 ", vocabulary_list=("1",

我正在使用dataset 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\u impl.FailedPremissionError:表 已初始化。[[节点: 生成器/输入层/SFR1指示器/SFR1查找/哈希表/表初始化 =InitializeTableV2[Tkey=DT_STRING,Tval=DT_INT64](生成器/输入层/SFR1\u指示符/SFR1\u查找/哈希表, 生成器/输入层/SFR1指示器/SFR1查找/Const, 生成器/输入\层/SFR1 \指示符/SFR1 \查找/ToInt64)】 [[Node:Generator2/IteratorGetNext= IteratorGetNextoutput_形状=[[?,10000160]], 输出类型=[DT\U浮点], _device=“/job:localhost/replica:0/task:0/device:CPU:0”]]

我尝试了许多组合来确定问题的根源。我知道,当模型同时包含
tf.feature\u列、categorical\u列和
dataset
api时,就会出现这个问题。如果我选择
TFRecordReader
而不是
dataset
,则代码正在运行

当我搜索stackoverflow时,我注意到有一个类似的问题。我在下面添加问题链接。由于这两个问题是相同的,我没有复制我所有的代码。下面的链接包含了足够的数据来解释我的问题


谢谢。

我遇到了同样的问题。然后根据Tensorflow发出的警告修改了我的代码,它可以正常工作:

不支持在传递给Dataset.map()的函数内创建查找表。在函数外创建每个表,并在函数内捕获以使用它


希望能有所帮助。

这是早期版本TensorFlow的问题,更新到TF2.0应该可以解决此问题


pip安装——升级tensorflow

我刚才给的。如果您在迭代数据集之后对TFRecord中的解析示例没有问题,请检查它。谢谢您的回答。我在示例中检查了您的解决方案。它正在工作,但我如何并行运行?并行化参数在map函数中。我还有一个问题。read_up_to是读取TF记录的快速方法。在数据集中有没有像“读取到”这样的解决方案?很抱歉,我真的不知道如何在地图中使用
tf.feature\u列
。我不认为这是直截了当的,因为地图有自己的独立于“主”图的图。我认为这里的一个想法是,您正在一批一批地解析和转换/预处理数据。因此,您可能能够以类似于分布式培训的方式使用一些并行性。我知道这可能不能满足你的需要。谢谢!捕获意味着将表对象作为参数传递到map函数中,只是为了向其他人说明。