ConvLSTM2D初始状态断言

2024-04-29 01:55:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我对the latest version of Keras有问题。我想为ConvLSTM2D提供一个辅助输入,它将充当层内存的初始值设定项。在

这个特性应该被实现,但是,下面的代码

from keras.layers import Input
from keras.models import Model
from keras.layers.convolutional_recurrent import ConvLSTM2D

latent_dim, mesh_size = 10, (20, 20)
prior_in = Input(shape=mesh_size + (latent_dim, ))
core_in = Input(shape=(None, ) + mesh_size + (1, ))
core_out = ConvLSTM2D(latent_dim, activation='elu', kernel_size=(3, 3),
                    padding='same')(core_in, initial_state=[prior_in, prior_in])
model = Model([prior_in, core_in], core_out)

加薪

^{pr2}$

另一方面,这个特性似乎是unit tested。在

经过一些调试后,我发现经过单元测试的代码和我的代码之间的区别是,K.is_keras_tensor(initial_state)只对上面发布的代码有效。当程序到达convolutional_recurrent.py line 313时,这一点很重要。如果我通过将第313行改为

if False and K.is_keras_tensor(additional_inputs[0]):

误差不会产生,而且可以训练、保存、加载模型,并使用它进行预测而不会出现任何问题。在

问题是:有人观察到同样的行为吗?你对如何在客户端解决这个问题有什么建议(不修改Keras源代码)?有人能解释一下iffor*)子句中的代码是什么吗?在

*)查看history,它是从引入的here的LSTM实现中复制粘贴的。在


Tags: 代码infromcoreimportinputsize特性