操纵形状未知的喀拉拉邦层

时间:2019-03-04 18:46:22

标签: tensorflow keras python-3.6

我有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上循环进行循环。

在这种情况下怎么办?

谢谢。

0 个答案:

没有答案