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

时间:2018-09-05 06:27:11

标签: python tensorflow

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

错误堆栈跟踪是这个。

  

回溯(最近通话最近):     _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)     文件“ C:\ ProgramData \ Anaconda3 \ envs \ tensorflow \ lib \ site-packages \ tensorflow \ python \ client \ session.py”,行1409,在_call_tf_sessionrun中       run_metadata)   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)]] p

在处理上述异常期间,发生了另一个异常:

1 个答案:

答案 0 :(得分:0)

u应该先运行tables_initializer,然后再运行其他程序,如下所示:

with tf.Session as sess:

sess.run(tf.tables_initializer())

...