self.input_fc = nn.Linear(self.embed.embedding_dim, d_model)
self.layer_stacks = nn.ModuleList([TransformerSeq2SeqDecoderLayer(d_model, n_head, dim_ff, dropout, layer_idx, fix_kp_num_len, max_kp_num) for layer_idx in range(6)])
self.embed_scale = math.sqrt(d_model)
里面直接给定了参数 ( for layer_idx in range(6)])),所以使得,至少出现以下bugs:
state【初始化采用def init_state(self, encoder_output, encoder_mask)函数】严格按照num_layers,即-dec_layers,但是实际层数为6,当dec_layers小于6时,会提示state访问越界
File "d:\code\【study-see】\【源码】kg_one2set-master\pykp\modules\multi_head_attn.py", line 57, in forward prev_k = state.decoder_prev_key[self.layer_idx] IndexError: list index out of range
大佬,您好,我是小白 代码通过-dec_layers参数来制定模块的解码器的层数,但是,实际上没有作用。 因为Decoder代码文件的
里面直接给定了参数 ( for layer_idx in range(6)])),所以使得,至少出现以下bugs:
File "d:\code\【study-see】\【源码】kg_one2set-master\pykp\modules\multi_head_attn.py", line 57, in forward prev_k = state.decoder_prev_key[self.layer_idx] IndexError: list index out of range
另外,对于decoder代码里面出现num_layers=opt.enc_layers,我觉得不妥,您可以试着提取一个基类,使得decoder,encoder继承于他。
【这个项目,包括您的论文,我收益非常大,很感谢您的工作,我还在继续拜读您的论文和代码,十分感谢】