在 Keras 中附加张量

Appending tensors in Keras

我的 keras 模型中有一个 for 循环,如下所示:

 for t in range(Ty):
   ....
   ....
   ....

   out = Dense(num_dec_tokens, activation='softmax')(x)  # out.shape = (?, num_dec_tokens) 

有没有一种方法可以在不使用列表的情况下将张量 'out' 追加 Ty 次(例如使用 lambda 层),即不使用:outputs = [],然后 ... outputs.append(出局)?

如果是这样,有没有办法可以将附加的张量更改为 (?, Ty, num_dec_tokens) 而不是 (Ty, ?, num_dec_tokens) 的形状?

谢谢...

一种方法是 reshape 输出。

outputs = []

for i in range(Ty):
    out = Dense(3, activation="softmax")(x)
    outputs.append(out)

output = Concatenate()(outputs)
output = Reshape([Ty,3])(output)

使用RepeatVector我们可以转换(None, num_dec_tokens)=>(None, Ty, num_dec_tokens)

>>> dense = Dense(num_dec_tokens, activation="softmax")(x)
>>> out = RepeatVector(Ty)(dense)

在您的情况下,您将学习 Ty Dense 层,但在使用 RepeatVector 时不会。