鱼C论坛

 找回密码
 立即注册
查看: 99|回复: 5

关于使用opennmt-tf训练模型出现问题

[复制链接]
发表于 2024-12-8 15:40:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在用opennmt-tf直接对我的文本进行分词或者自动配置配置文件以及训练模型都会报同样的错误
2024-12-08 15:32:34.708747: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2024-12-08 15:32:34.708887: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
C:\Users\user\Desktop\onmt\venv\lib\site-packages\tensorflow\python\keras\engine\training_arrays_v1.py:37: UserWarning: A NumPy version >=1.22.4 and <2.3.0 is required for this version of SciPy (detected version 1.19.5)
  from scipy.sparse import issparse  # pylint: disable=g-import-not-at-top
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\Desktop\onmt\venv\Scripts\onmt-build-vocab.exe\__main__.py", line 7, in <module>
  File "C:\Users\user\Desktop\onmt\venv\lib\site-packages\opennmt\bin\build_vocab.py", line 155, in main
    vocab.add_from_text(data_file, tokenizer=tokenizer)
  File "C:\Users\user\Desktop\onmt\venv\lib\site-packages\opennmt\data\vocab.py", line 87, in add_from_text
    for line in text:
  File "C:\Users\user\Desktop\onmt\venv\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 206, in __next__
    retval = self.readline()
  File "C:\Users\user\Desktop\onmt\venv\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 170, in readline
    self._preread_check()
  File "C:\Users\user\Desktop\onmt\venv\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 79, in _preread_check
    self._read_buf = _pywrap_file_io.BufferedInputStream(
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 94: invalid continuation byte

求救
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-8 16:06:54 | 显示全部楼层
看起来您遇到了与TensorFlow和CUDA相关的问题。以下是一些可能的解决方案:

1. **CUDA和cuDNN安装检查**:
   - 确保您的计算机上安装了正确版本的CUDA和cuDNN,并且与TensorFlow版本兼容。
   - 检查环境变量中是否设置了CUDA的路径。

2. **安装CPU版本的TensorFlow**:
   - 如果您的计算机没有GPU,可以考虑安装TensorFlow的CPU版本,这样就不会出现CUDA相关的错误。
pip uninstall tensorflow
   pip install tensorflow-cpu

3. **更新NumPy**:
   - 你的警告信息中提到NumPy版本的问题,确保NumPy版本>=1.22.4。
pip install numpy --upgrade

4. **环境设置**:
   - 确保您的虚拟环境设置正确,并且所有必要的库都是在该环境中安装的。

5. **尝试忽略错误**:
   - 如果适用,您可以忽略关于没有找到GPU库的警告信息,尤其在没有使用GPU的场景中。

通过这些步骤,您应该能解决或避免这类错误。如果仍有问题,请提供更详细的错误信息以获得进一步的帮助。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-8 16:23:24 | 显示全部楼层
FishC 发表于 2024-12-8 16:06
看起来您遇到了与TensorFlow和CUDA相关的问题。以下是一些可能的解决方案:

1. **CUDA和cuDNN安装检查** ...

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 94: invalid continuation byte那为什么会这样报错呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-8 16:31:14 | 显示全部楼层
1770797328 发表于 2024-12-08 16:23
UnicodeDecodeError: 'utf-8' codec can't decode byt ...


这个错误通常是由于尝试用UTF-8解码一个不是UTF-8编码的文件而引起的。以下是一些可能的解决方案:

1. **检查文件编码**:
   - 确认您的文件使用的是UTF-8编码。您可以使用文本编辑器(如Notepad++)打开文件,并查看其编码格式。

2. **指定编码格式**:
   - 在读取文件时,可以明确指定文件的编码。例如:
with open('yourfile.txt', 'r', encoding='your-encoding') as f:
       content = f.read()
   将 `'your-encoding'` 替换为实际的编码格式,如 `'latin1'` 或 `'gbk'`。

3. **检测和转换编码**:
   - 您可以使用工具(如 `chardet`)自动检测文件的编码,然后进行相应的转换。

4. **检查文件内容**:
   - 确保文件中没有非文本的二进制数据,例如图片或其他二进制格式的内容。

如果问题仍然存在,请进一步检查文件的编码和内容,以确保使用正确的解码方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-8 17:30:55 | 显示全部楼层
FishC 发表于 2024-12-8 16:31
这个错误通常是由于尝试用UTF-8解码一个不是UTF-8编码的文件而引起的。以下是一些可能的解决方案:

...

def merge_txt_files(folder_path, output_file,file_name):
    merged_data=''

    for root ,dirs,files in os.walk(folder_path):
        for file in files:
            if file == file_name:
                surse_file_path=os.path.join(root,file)
                with open(surse_file_path,'r',encoding='utf-8',errors='surrogate-escape') as f :
                    merged_data +=f.read()

    with open (output_file,'w',encoding='utf-8') as f:
        cleaned_content =merged_data.encode('utf-8','surrogate-escape').decode('utf-8','replace')
        f.write(cleaned_content)

    print("合并完成!!")我的内容写入完全是utf-8编码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-8 17:52:51 | 显示全部楼层
1770797328 发表于 2024-12-08 17:30
def merge_txt_files(folder_path, output_file,file_ ...


您的代码看起来是正确的,使用了`surrogate-escape`来处理不合法的字节。这种方式应该能够处理大部分编码问题,但如果仍然出现错误,可以尝试以下建议:

1. **确认文件编码一致**:
   - 确认所有待合并的文件都是UTF-8编码,或者含有相同的非UTF-8编码格式。

2. **逐步调试**:
   - 在循环中为每个文件输出其路径和读取状态,以便找到具体出错的文件。
   - 可以添加打印语句来捕捉文件内容编码的异常:
   
try:
         with open(surse_file_path, 'r', encoding='utf-8', errors='surrogate-escape') as f:
             merged_data += f.read()
     except UnicodeDecodeError as e:
         print(f"Error reading {surse_file_path}: {e}")

3. **读取与写入时错误处理改进**:
   - 如果在读取时已经处理了编码异常,在写入时应该不再需要额外的编码解码操作。

请确保检查所有涉及的文件,以确认其编码一致性。如果这些文件编码确实不一致,可能需要针对每个文件使用合适的编码方式或转换。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 12:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表