我有seq2seq模型,注意用keras编写。程序应该能够进行文本翻译。
所有原始和翻译语言的句子都被标记化并填充到相同的最大长度。 max_len_input-原始句子的最大长度,max_len_target-翻译句子的最大长度
分层方案如下:
enc_inp=Input(max_len_input)
enc_emb=Embedding_o(enc_inp)
enc_out = Bidirectional(LSTM(return_seq=True))(enc_emb)
dec_input=Input(max_len_target)
dec_out=Embedding_t(dec_input)
def attention(h, st_1):
rep = Repeat(max_len_input)(st_1)
Concatenate(axis=2)(h, rep)
...
return result
s, c = Input(), Input()
output = []
for t in range(max_len_target):
context = attention(dec_out, s)
x_t = Lambda(lambda x: x[:, t:t+1])(dec_out)
conc = Concatenate(axis=2)([context, x_t])
o, s, c = LSTM_dec(return_state=True)(conc, initial_state=[s, c])
output.append(o)
max_len_input和max_len_target值是在程序的开头定义的,因此一切正常, 但我想使用keras fit_generator方法-在fit_generator方法中标记化并填充图层之前而不是全部句子,而是在生成之后 -然后出现问题- 创建keras图层后,我得到了max_len_input和max_len_target值。在我所有的模型初始化之后,我得到了它们。 而且此最大值随批次而变化。
无法使用重复层和在max_len_target上循环进行循环。
在这种情况下怎么办?
谢谢。