为了账号安全,请及时绑定邮箱和手机立即绑定

从头开始训练拥抱脸的GPT2:断言n_state%config.n_head== 0错误

从头开始训练拥抱脸的GPT2:断言n_state%config.n_head== 0错误

慕慕森 2022-09-13 17:22:41
我正在尝试将GPT2架构用于音乐应用,因此需要从头开始训练它。经过一番谷歌搜索,我发现来自拥抱脸github的问题#1714已经“解决”了这个问题。当我尝试运行建议的解决方案时:from transformers import GPT2Config, GPT2ModelNUMLAYER = 4NUMHEAD = 4SIZEREDUCTION = 10 #the factor by which we reduce the size of the velocity argument.VELSIZE = int(np.floor(127/SIZEREDUCTION)) + 1 SEQLEN=40 #size of data sequences.EMBEDSIZE = 5 config = GPT2Config(vocab_size = VELSIZE, n_positions = SEQLEN, n_embd = EMBEDSIZE, n_layer = NUMLAYER, n_ctx = SEQLEN, n_head = NUMHEAD)  model = GPT2Model(config)我收到以下错误:Traceback (most recent call last):  File "<ipython-input-7-b043a7a2425f>", line 1, in <module>    runfile('C:/Users/cnelias/Desktop/PHD/Swing project/code/script/GPT2.py', wdir='C:/Users/cnelias/Desktop/PHD/Swing project/code/script')  File "C:\Users\cnelias\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile    execfile(filename, namespace)  File "C:\Users\cnelias\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile    exec(compile(f.read(), filename, 'exec'), namespace)  File "C:/Users/cnelias/Desktop/PHD/Swing project/code/script/GPT2.py", line 191, in <module>    model = GPT2Model(config)这是什么意思,我该如何解决?同样更一般地说,是否有关于如何使用GPT2进行转接呼叫的文档?我可以定义自己的函数还是必须使用模型的内置函数?我是被迫使用 a 进行训练,还是可以给它单独的张量?我寻找它,但在文档上找不到这些问题的答案,但也许我错过了一些东西。train()DatasetPS :我已经阅读了博客文章fron huggingface.co,但它省略了太多的信息和细节,不适合我的应用程序。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我认为错误消息非常清楚:

assert n_state % config.n_head == 0

通过代码追溯它,我们可以看到

n_state = nx  # in Attention: n_state=768

这表示 表示嵌入维度(在类似BERT的模型中,默认情况下通常为768)。然后,当我们查看 GPT-2 文档时,似乎指定此参数是 ,您正在将其设置为 。正如错误所示,嵌入维度必须通过注意力头的数量均匀可整除,这些注意头被指定为 。因此,选择不同的嵌入维度作为倍数应该可以解决问题。当然,您也可以更改开始的磁头数,但似乎不支持奇数嵌入维度。n_staten_embd544


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 270 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号