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)
加注
File "tst.py", line 9, in <module>
padding='same')(core_in, initial_state=[prior_in, prior_in])
File "python-3.5.4.amd64\lib\site-packages\keras\layers\convolutional_recurrent.py", line 320, in __call__
output = super(ConvRNN2D, self).__call__(full_input, **kwargs)
File "python-3.5.4.amd64\lib\site-packages\keras\layers\recurrent.py", line 497, in __call__
inputs, initial_state, constants, self._num_constants)
File "python-3.5.4.amd64\lib\site-packages\keras\layers\recurrent.py", line 2247, in _standardize_args
assert initial_state is None and constants is None
AssertionError
另一方面,此功能似乎是unit tested。
经过一些调试后,我发现单元测试的代码与我的代码之间的区别是K.is_keras_tensor(initial_state)
仅对上面发布的代码为True。当程序达到convolutional_recurrent.py line 313时,这很重要。如果我通过将行313更改为
if False and K.is_keras_tensor(additional_inputs[0]):
不会引发错误,可以训练,保存,加载模型并将其用于预测而不会出现任何问题。
问题是:有人观察到同样的行为吗?您是否有任何建议如何在客户端解决问题(不修改Keras源代码)?任何人都可以解释* if
子句中的代码段是什么吗?