Keras中的附加张量

时间:2018-07-18 08:47:00

标签: keras keras-layer

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

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

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

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

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

谢谢...

1 个答案:

答案 0 :(得分:0)

一种方法是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时则不会。