查找表时出现查找表未初始化错误
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 ++中查找图像卷积时出现分段错误(核心转储)错误