查找表时出现查找表未初始化错误

Posted

技术标签:

【中文标题】查找表时出现查找表未初始化错误【英文标题】:I am getting lookup table not initialized error when looking up the table 【发布时间】:2019-02-10 04:52:40 【问题描述】:
def create_dataset(csv_path, vocab):

dataset = tf.data.TextLineDataset(csv_path).skip(1)
dataset = dataset.map(lambda sentence : tf.string_split([sentence]).values)
dataset = dataset.map(lambda tokens : (vocab.lookup(tokens), tf.size(tokens)))
return dataset

上面是我用来查找表格的函数 下面我试图用查找表来填充句子

def input_fn( sentence, labels, id_pad):

dataset = tf.data.Dataset.zip((sentence, labels))

padded_shapes = ((tf.TensorShape([None]),
                  tf.TensorShape([])),
                 tf.TensorShape([]))

padded_value = ((id_pad,0),
                "")

dataset = (dataset
           .padded_batch(128,padded_shapes=padded_shapes,padding_values=padded_value)
           .prefetch(1))

iterator = dataset.make_initializable_iterator()
((sentence, sentence_length),(label)) = iterator.get_next()
init_op = iterator.initializer
inputs = 
    'sentence':sentence,
    'sentence_length': sentence_length,
    'label': label,
    'init_op':init_op


return inputs

下面我正在创建和运行会话:

vocab = tf.contrib.lookup.index_table_from_file( 'data\\vocab.txt', num_oov_buckets=1)
sentence_data = create_dataset('data\\csv\\amazon_feature.csv',vocab)
label_data = tf.data.TextLineDataset('data\\csv\\amazon_label.csv').skip(1)
id_pad = vocab.lookup(tf.constant('<PAD>'))
input = input_fn(sentence_data,label_data,id_pad)
with tf.Session() as sess:
sess.run([input['init_op'], tf.tables_initializer(), tf.global_variables_initializer()])

错误堆栈跟踪是这样的。

Traceback(最近一次调用最后一次): _do_call 中的文件“C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py”,第 1322 行 返回 fn(*args) _run_fn 中的文件“C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py”,第 1307 行 选项,feed_dict,fetch_list,target_list,run_metadata) _call_tf_sessionrun 中的文件“C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py”,第 1409 行 运行元数据) tensorflow.python.framework.errors_impl.FailedPreconditionError:表未初始化。 [[节点:string_to_index_Lookup/hash_table_Lookup = LookupTableFindV2[Tin=DT_STRING, Tout=DT_INT64, _device="/job:localhost/replica:0/task:0/device:CPU:0"](string_to_index/hash_table, 常量, string_to_index/ hash_table/Const)]]

在处理上述异常的过程中,又发生了一个异常:

【问题讨论】:

能否打印问题中的error message 回溯? 用错误信息更新了问题 【参考方案1】:

你应该先运行tables_initializer,然后运行others。如下:

with tf.Session as sess:

sess.run(tf.tables_initializer())

...

【讨论】:

以上是关于查找表时出现查找表未初始化错误的主要内容,如果未能解决你的问题,请参考以下文章

在opencv c ++中查找图像卷积时出现分段错误(核心转储)错误

访问 VBA:无法初始化数据提供程序

sql server 创建视图添加表时出现从其他数据库导入的表未显示出来

创建包含查找表的视图时出现问题

装MySQL数据库时出现一个错误这怎么解决

尝试查找棋盘角时出现opencv python错误