我是张量流和神经网络的新手.我开始了一个关于检测波斯文本错误的项目.我使用了这个地址中的代码并在这里开发了代码.请检查代码,因为我无法在此处输入所有代码.
我想要做的是给模型提供几个波斯句子进行训练,然后看模型是否可以检测到错误的句子.该模型适用于英语数据,但当我将其用于波斯数据时,我遇到了这个问题.
代码太长了,无法写在这里,所以我试着指出我认为可能导致问题的部分.我使用这些行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
地址不正确.在train.py
第144行之后out_dir
,我添加了这个:
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"
现在,地址设置正确,代码工作没有问题.