python - Tensorflow 无法在评估过程中恢复词汇

标签 python tensorflow python-unicode

我是 tensorflow 和神经网络的新手。我开始了一个关于检测波斯文本错误的项目。我使用了 this address 中的代码并在 here 中开发了代码.请检查代码,因为我无法将所有代码放在这里。

我想做的是把几个波斯语句子给模型训练,然后看看模型能不能检测出错误的句子。该模型适用于英语数据,但当我将其用于波斯语数据时,我遇到了这个问题。

代码太长,无法写在这里,所以我试着指出我认为可能导致问题的部分。我在 train.py 中使用了这些行,它工作正常并存储词汇表:

x_text, y = data_helpers.load_data_labels(datasets)
# Build vocabulary
max_document_length = max([len(x.split(" ")) for x in x_text])
vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length)
x = np.array(list(vocab_processor.fit_transform(x_text)))

然而,当我在 eval.py 中尝试这段代码时训练之后:

vocab_path = os.path.join(FLAGS.checkpoint_dir, "..", "vocab")
vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)
x_test = np.array(list(vocab_processor.transform(x_raw)))

发生此错误:

vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)
File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\tensorflow\contrib\learn\python\learn\preprocessing\text.py", line 226, in restore
return pickle.loads(f.read())
File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 118, in read
self._preread_check()
 File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 78, in _preread_check
  compat.as_bytes(self.__name), 1024 * 512, status)
 File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\contextlib.py", line 66, in __exit__
 next(self.gen)
 File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status
pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.NotFoundError: NewRandomAccessFile failed to Create/Open: ..\vocab : The system cannot find the file specified.

我认为问题是因为它无法读取训练后存储的词汇表,因为数据是 unicode 而不是英语。谁能帮帮我

最佳答案

出现这个问题的原因是vocab地址不正确。 在设置了 out_dir 的第 144 行之后的 train.py 中,我添加了以下内容:

file = open('model_dir.txt', 'w')
file.write(out_dir)
file.close()

模型训练完成后,地址保存在model_dir.txt文件目录下。

然后在 eval.py 中我添加了这个:

model_dir = open('model_dir.txt').readline()
vocab_path = model_dir + "/vocab"

现在,地址设置正确,代码可以正常工作。

关于python - Tensorflow 无法在评估过程中恢复词汇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47617605/

相关文章:

python - 除了 tabula 之外,我如何提取 pdf 表格

python - 将 mnist 图像读入 Tensorflow

python-2.7 - Tensorflow:如何初始化给定变量范围内的所有变量

python - 如何重现 UnicodeEncodeError?

python - 有什么方法可以在 python 中将 unicode 文本格式数据正确转换为 csv 吗?

python - flask html js css img 引用 404 错误

python - 用于从字符串开头开始的 substr 匹配的 Django Queryset

python - 无法访问 pandas 数据框中的列

python - 如何在 Tensorflow 中详尽地打印一维张量中的值而不得到截断的输出?

python - 在 Python 3 中使用带字节的 textwrap.dedent()