Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多输入Keras时间分布层_Python_Machine Learning_Keras_Deep Learning_Keras Layer - Fatal编程技术网

Python 多输入Keras时间分布层

Python 多输入Keras时间分布层,python,machine-learning,keras,deep-learning,keras-layer,Python,Machine Learning,Keras,Deep Learning,Keras Layer,我试图使以下代码行正常工作: low_encoder_out = TimeDistributed( AutoregressiveDecoder(...) )([X_tf, embeddings]) 其中,AutoregressiveDecoder是一个接受两个输入的自定义层。 经过一点谷歌搜索,问题似乎是TimeDistributed包装器不接受多个输入。有一些解决方案建议在将两个输入输入输入到图层之前将其合并,但由于它们的形状是 X_tf.shape: (?, 16, 16, 128, 5)

我试图使以下代码行正常工作:

low_encoder_out = TimeDistributed( AutoregressiveDecoder(...) )([X_tf, embeddings])
其中,
AutoregressiveDecoder
是一个接受两个输入的自定义层。 经过一点谷歌搜索,问题似乎是
TimeDistributed
包装器不接受多个输入。有一些解决方案建议在将两个输入输入输入到图层之前将其合并,但由于它们的形状是

X_tf.shape: (?, 16, 16, 128, 5)
embeddings.shape: (?, 16, 1024)

我真的不知道如何合并它们。有没有办法让
时间分布式
层处理多个输入?或者,还有什么方法可以很好地合并两个输入?

正如您所提到的
TimeDistributed
层不支持多个输入。考虑到所有输入的时间步数(即第二个轴)必须相同,一个(不是很好的)解决方法是将所有输入重塑为
(无,n_timsteps,n_featsN)
,将它们串联起来,然后作为
时间分布的
层的输入馈送:

X_tf_r = Reshape((n_timesteps, -1))(X_tf)
embeddings_r = Reshape((n_timesteps, -1))(embeddings)

concat = concatenate([X_tf_r, embeddings_r])
low_encoder_out = TimeDistributed(AutoregressiveDecoder(...))(concat)

当然,您可能需要修改自定义图层的定义,并在必要时将输入分开。

谢谢您的回答。我本希望避免这种变通办法,但这似乎是唯一能让它奏效的办法。。。非常奇怪的是,时间分布层不支持多个输入,对我来说这似乎是一个很常见的用例。。。