问题描述
今天在复现Chinese-Chatbot-PyTorch-Implementation的时候出现了一些问题:包括且不限于ModuleNotFoundError: No module named 'torchnet',ModuleNotFoundError: No module named 'fire',ModuleNotFoundError: No module named 'jieba'和ERROR: No matching distribution found for torch==1.0.1,接下来将逐个解决。
解决办法及原因分析
ERROR: No matching distribution found for torch==1.0.1
原因分析
可能的原因是:
版本不存在:PyTorch 1.0.1 可能不再维护或不再提供在包索引中的支持。新版本的 PyTorch 已经发布,所以你可以尝试安装一个较新的版本。
拼写错误:确保你输入的版本号没有拼写错误。检查是否有多余的空格或字符。
解决办法
pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
ModuleNotFoundError: No module named 'jieba'
原因分析
表示你的 Python 环境中缺少了名为 "jieba" 的模块,因为 Python 找不到该模块来执行相关的操作。
解决办法
pip install jieba
ModuleNotFoundError: No module named 'torchnet'
原因分析
错误表示你的 Python 环境中缺少名为 "torchnet" 的模块,Python 找不到该模块以执行相关的操作
解决办法
pip install torchnet
需要注意的是,不要用其他博主的解决办法,比如以下这几种:
ModuleNotFoundError: No module named 'torchnet' https://blog.csdn.net/qq_36584673/article/details/117071142ModuleNotFoundError: No module named 'torchnet'https://blog.csdn.net/w5688414/article/details/96346546 ModuleNotFoundError: No module named 'torchnet'https://blog.51cto.com/u_9453611/5569123
我这里边并没有按照这个方法解决。
ModuleNotFoundError: No module named 'fire'
原因分析
表示你的 Python 环境中缺少名为 "fire" 的模块,Python 找不到该模块以执行相关的操作。
解决办法
pip install fire
RuntimeError: 'lengths' argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor
原因分析
表示你正在使用 PyTorch 中的某个函数,并且该函数要求 "lengths" 参数是一个在 CPU 上的 1D int64 张量(tensor),但你提供了一个在 CUDA 设备上的 1D Long 张量。
要解决这个错误,你可以将 "lengths" 张量移动到 CPU 上,然后将其转换为 int64 类型。
解决办法
在model.py文件中
将Line 51packed = torch.nn.utils.rnn.pack_padded_sequence(embedded, input_lengths)
改为packed = torch.nn.utils.rnn.pack_padded_sequence(embedded, input_lengths.cpu())
此处致谢https://github.com/Doragd/Chinese-Chatbot-PyTorch-Implementation/issues/13#issuecomment-1592611674https://github.com/Doragd/Chinese-Chatbot-PyTorch-Implementation/issues/13#issuecomment-1592611674
完结撒花
至此就可以愉快的进行聊天了,只能说有情趣,但不多。