查找表时出现查找表未初始化错误 [英] I am getting lookup table not initialized error when looking up the table

查看:36
本文介绍了查找表时出现查找表未初始化错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

Above is the function I am using to lookup into table Below I am trying to pad the sentence with from lookup table

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

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

Below I am creating and running the session:

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()])

错误堆栈跟踪是这样的.

Error stacktrace is this.

回溯(最近一次调用最后一次):文件C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py",第 1322 行,在 _do_call返回 fn(*args)文件C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py",第 1307 行,在 _run_fn选项、feed_dict、fetch_list、target_list、run_metadata)文件C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py",第 1409 行,在 _call_tf_sessionrun运行元数据)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, Const, string_to_index/hash_table/Const)]]

Traceback (most recent call last): File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1322, in _do_call return fn(*args) File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1307, in _run_fn options, feed_dict, fetch_list, target_list, run_metadata) File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py", line 1409, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized. [[Node: 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, Const, string_to_index/hash_table/Const)]]

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

During handling of the above exception, another exception occurred:

推荐答案

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

u should run tables_initializer firstly,then run others.like below:

with tf.Session as sess:

sess.run(tf.tables_initializer())

...

这篇关于查找表时出现查找表未初始化错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆