我正在尝试使用GPT-2的colab设置从已保存的检查点继续训练-simple网址为:
https://colab.research.google.com/drive/1SvQne5O_7hSdmPvUXl5UzPeG5A6csvRA#scrollTo=aeXshJM-Cuaf
但是我就是不能让它工作。从我的googledrive加载保存的检查点运行良好,我可以使用它来生成文本,但我不能从该检查点继续训练。在gpt2.finetune ()中,我输入了restore.from='latest"和overwrite=True,并且我一直在尝试使用相同和不同的run_name,并且使用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()就会抛出这个错误
发布于 2020-04-24 12:17:55
在微调之前,你不需要(也不能)运行load_gpt2()。相反,您只需将run_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,
)这将自动从你的checkpoint/run-name文件夹中获取最新的检查点,加载它的权重,并从它停止的地方继续训练。您可以通过检查纪元编号来确认这一点-它不会再次从0开始。例如,如果你之前训练了25个时期,它将从26开始:
Training...
[26 | 7.48] loss=0.49 avg=0.49还要注意,要多次运行finetuning (或加载另一个模型),通常必须重新启动python运行时。您可以在每个finetine命令之前运行以下命令:
tf.reset_default_graph()发布于 2021-04-13 19:19:14
我尝试了以下几种方法,效果很好:
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
)您必须指定与要恢复训练和hp restore_from = 'latest'的模型相同的‘run_name
https://stackoverflow.com/questions/60097717
复制相似问题