Python GPT-2从检查站继续训练
我正在尝试使用GPT-2-simple的colab设置从保存的检查点继续培训,网址为: 但我就是不能让它工作。从我的googledrive加载保存的检查点工作正常,我可以使用它生成文本,但我无法从该检查点继续训练。在Python GPT-2从检查站继续训练,python,tensorflow,nlp,google-colaboratory,gpt-2,Python,Tensorflow,Nlp,Google Colaboratory,Gpt 2,我正在尝试使用GPT-2-simple的colab设置从保存的检查点继续培训,网址为: 但我就是不能让它工作。从我的googledrive加载保存的检查点工作正常,我可以使用它生成文本,但我无法从该检查点继续训练。在gpt2.finetune()中,我正在输入restore.from='latest'“和overwrite=True,我一直试图使用相同的运行名称和不同的运行名称,并使用overwrite=True,而不是。正如建议的那样,我还尝试在这段时间内重新启动运行时,但没有任何帮助,我不
gpt2.finetune()
中,我正在输入restore.from='latest'“
和overwrite=True
,我一直试图使用相同的运行名称和不同的运行名称,并使用overwrite=True
,而不是。正如建议的那样,我还尝试在这段时间内重新启动运行时,但没有任何帮助,我不断遇到以下错误:
"ValueError: Variable model/wpe already exists, disallowed. Did you mean to set reuse=True
or reuse=tf.AUTO_REUSE in VarScope?"
我认为我需要在继续训练之前运行gpt2.load_gpt2(sess,run_name='myRun')
,但每当我首先运行此命令时,gtp2.finetune()
就会抛出此错误您不需要(也不能)在微调之前运行load_gpt2()
。您只需将run\u name
指定给finetune()
。我同意这是令人困惑的地狱;我也有同样的问题
sess = gpt2.start_tf_sess()
gpt2.finetune(sess,
file_name,
model_name=model_name,
checkpoint_dir=checkpoint_dir,
run_name=run_name,
steps=25,
)
这将自动从您的检查点/跑步名称
文件夹中获取最新的检查点,加载其权重,并在结束时继续训练。您可以通过检查历元编号来确认这一点-它不再从0开始。例如,如果您之前已经训练了25个历代,那么它将在26开始:
Training...
[26 | 7.48] loss=0.49 avg=0.49
还要注意,要多次运行FineTunning(或加载另一个模型),通常必须重新启动python运行时。您可以在每个finetine命令之前运行此命令:
tf.reset_default_graph()
我尝试了以下方法,效果很好:
tf.reset_default_graph()
sess = gpt2.start_tf_sess()
gpt2.finetune(sess,
steps=n,
dataset=file_name,
model_name='model',
print_every=z,
run_name= 'run_name',
restore_from='latest',
sample_every=x,
save_every=y
)
您必须指定与要恢复培训的型号相同的“run\u name”,hp
restore\u from='latest'
对此表示同意,但我的培训是从零开始的,我只是将运行时版本更改为v3以进行微调,而v2已经存在。你确定这是它运行的标准方式吗?如果它对偶然发现它的任何人都有用-jameslol是正确的,但是-如果你想删除文件夹中已经存在的内容,则需要overwrite=True,并且-checkpoint_dir应该是保存所有检查点的目录(通常为“checkpoint”),不是要从中加载的特定检查点的目录。它将从run_name推断出正确的检查点。所以应该看起来像:gpt2.finetune(sess,file_name,model_name='124M',checkpoint_dir='checkpoint',run_name=run_name,steps=25,overwrite=True)