无法导入编码器代码以进行微调GPT-2

时间:2019-08-30 05:30:36

标签: python path nlp init

我正在尝试重现本文中的示例: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

编码器 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并从此处执行代码,这样做的问题是这样做也会破坏模型的相对路径,尽管我处理过路径问题也一直在处理其他文件。

4 个答案:

答案 0 :(得分:1)

查看encode.pyhere)的来源。一开始就是这样:

# Usage:
#  PYTHONPATH=src ./encode.py <file|directory|glob> /path/to/output.npz
#  PYTHONPATH=src ./train --dataset /path/to/output.npz

请重试,按照他们的建议设置PYTHONPATH

答案 1 :(得分:1)

没有一个对我有用。但是我所做的是我安装了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 https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads更新了可视C ++并运行encode.py并成功运行。

答案 2 :(得分:0)

  1. __init__.py文件夹中创建一个名为src的空文件。
  2. encoder导入为:from src import encoder

答案 3 :(得分:0)

这不是执行此操作的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的乐趣:)