如何将未知的时间步长输入到TimeDistributed Keras层



我的输入状态为shape = (84,84,4)

state = Input(shape=(84,84,4), dtype="float")

所以我想把它传递给一些时间步长为1..5的timedidistributed层(在1到5的范围内),我不知道它到底等于哪个。

我的下一层是这样的:

conv1 = TimeDistributed(Convolution2D(16, 8, 8, subsample=(4, 4), border_mode='valid',
                                      activation='relu', dim_ordering='tf'))(state)

这一层出现了错误:

IndexError: tuple index out of range

我只是想传递一个未知的时间序列大小到timedidistributed,然后再到LSTM。

所以基本上在Keras中-您需要提供序列长度,因为在计算期间,Keras层接受具有指定形状的输入numpy数组-这使得所有输入(至少在一个批次中)必须具有固定的长度。但是,您仍然可以通过0填充来处理不同的输入大小(通过在开始时添加所有零虚拟时间步使所有序列大小相等),然后屏蔽使您的网络等同于变化长度输入网络的内容。

您可以给出一个可变的序列长度,如下所示:

classifier.add(TimeDistributed(Convolution2D(64,(3,3)),input_shape=(None,None,None,3)))

但是现在你必须调整向量的长度,当它在时间预测中变平或展开时

相关内容

  • 没有找到相关文章

最新更新