Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow:FailedPremissionError:表未初始化(使用tf.data.Dataset API)_Python_Tensorflow_Tensorflow Datasets - Fatal编程技术网

Python Tensorflow:FailedPremissionError:表未初始化(使用tf.data.Dataset API)

Python Tensorflow:FailedPremissionError:表未初始化(使用tf.data.Dataset API),python,tensorflow,tensorflow-datasets,Python,Tensorflow,Tensorflow Datasets,我使用的是tf.data.DatasetAPI与tf.contrib.lookup.index\u table\u from\u tensor 我的数据集是这样创建的: dataset = tf.data.Dataset.from_tensor_slices(({'reviews': x}, y))) 以下是我正在做的: data_table = tf.contrib.lookup.index_table_from_tensor(tf.constant(data_vocab)) labels_

我使用的是
tf.data.Dataset
API与
tf.contrib.lookup.index\u table\u from\u tensor

我的数据集是这样创建的:

dataset = tf.data.Dataset.from_tensor_slices(({'reviews': x}, y)))
以下是我正在做的:

data_table = tf.contrib.lookup.index_table_from_tensor(tf.constant(data_vocab))
labels_table = tf.contrib.lookup.index_table_from_tensor(tf.constant(labels_vocab))
然后,我将预处理函数映射到我的
数据集

def preprocess(x, y):
    # split on whitespace
    x['reviews'] = tf.string_split([x['reviews']])
    # turn into integers
    return data_table.lookup(x['reviews']), labels_table.lookup(y)
到目前为止一切都很好。但是,当我尝试将数据集传递到Keras模型进行培训时,我得到:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
我在谷歌上四处搜索,人们建议我需要包括:

sess = tf.Session()
sess.run(tf.tables_initializer())
但现在我明白了:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
     [[Node: hash_table_Lookup = LookupTableFindV2[Tin=DT_STRING, Tout=DT_INT64](hash_table_lookup_placeholder, StringSplit:1, hash_table_lookup_placeholder_1)]]
     [[Node: IteratorGetNext_1 = IteratorGetNext[output_shapes=[[?,?], [?,20]], output_types=[DT_INT64, DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"](Iterator_1)]]
知道我的查找表为什么还没有初始化/如何修复吗


谢谢

嗨,这有点奇怪,也许下面的工作示例可以帮助您:

x = ['this is aswesome', 'i dont like it', 'i love it', 'i hate it']
y = ['positive','negative','positive','negative']
data_vocab = list({word for sentence in x for word in sentence.split(' ')})
label_vocab = list(set(y))

dataset = tf.data.Dataset.from_tensor_slices(({'reviews': x}, y))

data_table=tf.contrib.lookup.index_table_from_tensor(tf.constant(data_vocab))
labels_table = tf.contrib.lookup.index_table_from_tensor(tf.constant(label_vocab))

def preprocess(x, y):
    # split on whitespace
    x['reviews'] = tf.string_split([x['reviews']])
    # turn into integers
    return data_table.lookup(x['reviews']), labels_table.lookup(y)

preprocessed = dataset.map(preprocess)

it = preprocessed.make_initializable_iterator()
sess = tf.Session()
sess.run(it.initializer)
sess.run(tf.tables_initializer()) 
如果调用
sess.run(it.get_next())
则会得到
(sparsetenservalue(index=array([[0,0]),
[0, 1],
[0,2]]、值=数组([2,7,4])、密集形状=数组([1,3])、1)


希望这对你有帮助

谢谢你的帮助!难道我不能用sess.run(tf.tables\u initializer())
初始化表,然后将我的
数据集
传递给我的Keras模型吗?调用
model.fit(…)
时会发生错误。另外,我不需要初始化我的数据集来获得一个Keras模型来进行训练,我不认为通常你可以传递数据集,我想知道你如何处理你的会话?你确定你使用的是同一个会话吗?我只需运行
sess=tf.session()sess.run(tf.tables\u initializer())
,构建我的Keras模型,并在数据集上调用
.fit
,在拟合模型之前,你可以尝试添加这一行
tf.Keras.backend.set\u session(sess)