研究文章

比起一个改进的基于变压器神经机器翻译策略:Interacting-Head关注

算法1

Interacting-head关注。
输入:正面,d_model,面具,q, k, v
输出:输出,经办人
(1) 进口tensorflow tf, keras.layers。密集,keras.callbacks.K
(2) dk = dv = d_model / /头
(3) qs_layer =密集(正面 dk), ks_layer =密集(正面 dk), vs_layer =密集(正面 dv)
(4) q = qs_layer (q), ks = ks_layer (k), vs = vs_layer (v)
(5) qs⟵重塑(qs), ks←重塑(ks)和←重塑(vs)
(6) 脾气= tf.sqrt (tf.shape (ks) [−1])
(7) 我= 1
(8) j = 1头
(9) a_ij = K。batch_dot (qs:,:,:, ks: j:,:,轴= [2])
(10) 如果面具不是没有然后:
(11) mmask = (−1 e + 9) (1−面具)
(12) a_ij⟵K.Add ([a_ij mmask])
(13) 如果
(14) a_ij←K。扩大退去(a_ij,轴= 1)
(15) attn.append (a_ij)
(16) 结束了
(17) 结束了
(18) j = 0
(19) 真正的
(20) 如果j != 0和j % = = 0然后
(21) 打破
(22) 如果
(23) 我= 1
(24) =注意我 头+j]
(25) temp_a.append (a)
(26) 结束了
(27) sm = K.Activation (“softmax K.Add (temp_a))
(28) 输出= K.batch_dot (sm [0,::,:], vs [j::,:],轴= [1,2])
(29) 输出←K。expand_dims(输出轴= 0)
(30) sm←K。permute_dimensions (sm (1 0、2、3)
(31) outpus.append(输出)
(32) attns.append (sm)
(33) j←+ 1
(34) 结束时
(35) 输出= K。concatente(输出轴= 0)
(36) 经办人= K。concatente(经办人,轴= 0)
(37) 输出←重塑(输出),经办人←重塑(经办人)