gpt4 book ai didi

keras - 将initial_state 传递给Keras 中的双向RNN 层

转载 作者:行者123 更新时间:2023-12-02 02:57:25 25 4
gpt4 key购买 nike

我正在尝试使用双向 GRU 在 Keras 中实现编码器-解码器类型网络。

以下代码似乎有效

src_input = Input(shape=(5,))
ref_input = Input(shape=(5,))

src_embedding = Embedding(output_dim=300, input_dim=vocab_size)(src_input)
ref_embedding = Embedding(output_dim=300, input_dim=vocab_size)(ref_input)

encoder = Bidirectional(
GRU(2, return_sequences=True, return_state=True)
)(src_embedding)

decoder = GRU(2, return_sequences=True)(ref_embedding, initial_state=encoder[1])

但是当我将解码更改为使用 Bidirectional 时包装,它停止显示 encodersrc_input model.summary() 中的图层.新的解码器看起来像:
decoder = Bidirectional(
GRU(2, return_sequences=True)
)(ref_embedding, initial_state=encoder[1:])
model.summary()的输出与双向解码器。
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) (None, 5) 0
_________________________________________________________________
embedding_2 (Embedding) (None, 5, 300) 6610500
_________________________________________________________________
bidirectional_2 (Bidirection (None, 5, 4) 3636
=================================================================
Total params: 6,614,136
Trainable params: 6,614,136
Non-trainable params: 0
_________________________________________________________________

问题:我通过时是否遗漏了什么 initial_stateBidirectional解码器?我怎样才能解决这个问题?有没有其他方法可以使这项工作?

最佳答案

这是一个错误。 RNN层实现 __call__使得 initial_state 中的张量可以收集到模型实例中。然而,Bidirectional包装器没有实现它。所以关于initial_state的拓扑信息缺少张量并且发生了一些奇怪的错误。

我在实现时没有意识到 initial_stateBidirectional .现在应该修复了,在 this PR 之后.您可以在 GitHub 上安装最新的 master 分支来修复它。

关于keras - 将initial_state 传递给Keras 中的双向RNN 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48521910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com