在 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 时不会。
我的 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 时不会。