我正在尝试重现本文中的示例:https://medium.com/@ngwaifoong92/beginners-guide-to-retrain-gpt-2-117m-to-generate-custom-text-content-8bb5363d8b7f
示例代码来自以下仓库:https://github.com/nshepperd/gpt-2
安装需求和下载模型后,下一步是训练模型,为此必须执行以下代码:
python encode.py lyric.txt lyric.npz
这里的问题是这需要导入以下模块:
import argparse
import numpy as np
import encoder
from load_dataset import load_dataset
encoder 和 load_dataset 在子目录中:
|--encode.py
--src
|--encoder.py
|--load_dataset.py
这会产生以下错误:
ModuleNotFoundError: No module named 'encoder'
我尝试创建
__init__.py
文件并将它们导入为
src.encoder 和 src.load_dataset 但那些也不起作用。
在中篇文章中,作者建议将文件 encoder.py 移动到 src 并从那里执行代码,问题是这样做也会破坏模型的相对路径,尽管我用路径也会继续用于其他文件。
__init__.py
文件夹中创建一个名为src
的空文件。encoder
为:from src import encoder
查看
encode.py
的来源(here)。一开始是这样的:
# Usage:
# PYTHONPATH=src ./encode.py <file|directory|glob> /path/to/output.npz
# PYTHONPATH=src ./train --dataset /path/to/output.npz
请再试一次,按照他们的建议设置
PYTHONPATH
。
这些都不适合我。然而我所做的是我安装了 python 3.6 因为 tensorflow 与这个版本兼容,我安装了以下要求:
h5py==3.1.0
idna==2.10
protobuf==3.13.0
pywin32==228
regex==2020.10.28
requests==2.24.0
tensorboard==2.3.0
tensorflow==2.3.1
tensorflow-estimator==2.3.0
tqdm==4.51.0
urllib3==1.25.11
更新了 tensorflow 的 visual C++ https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads 并运行 encode.py 并且成功了。
这不是 100% 正确的方法,但要解决设置 pythonpath 的问题,您可以将文件从 gpt-2/ 目录复制到 src/ 目录。
所以在进入 gpt-2 目录后,您可以在 cmd 行中运行以下命令。
cp encode.py src\
cp train.py src\
cp models\ src\
如果你做了所有这些然后 cd 进入 src/ 并运行:
python filetoencode.txt filetoencode.npz
您现在应该有一个编码文件,并且能够进入博文中的后续步骤。
享受 gpt-2 的乐趣 :)
我知道这是一个非常古老的话题,但这对我有用: 将 encode.py 导入更改为
import src.encoder as encoder
from src.load_dataset import load_dataset
然后就可以跑了
py encode.py trainingfile.txt training.npz