Machine learning 如何将未知的时间步长输入到时间分布的Keras层

Machine learning 如何将未知的时间步长输入到时间分布的Keras层,machine-learning,neural-network,tensorflow,deep-learning,keras,Machine Learning,Neural Network,Tensorflow,Deep Learning,Keras,我的输入状态为shape=(84,84,4) 所以我想把它传递给一个时间步长为1..5(在1到5的范围内)的时间分布层,我不知道它到底等于哪个 我的下一层是这样的: conv1 = TimeDistributed(Convolution2D(16, 8, 8, subsample=(4, 4), border_mode='valid', activation='relu', dim_ordering='tf'))(sta

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

所以我想把它传递给一个时间步长为1..5(在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

我只想将一个未知的时间序列大小传递给TimeDistributed,然后再传递给LSTM。

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

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

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

但现在,在预测时,当向量变平或取消滚动时,您必须调整向量的长度。

我的答案正确吗?
classifier.add(TimeDistributed(Convolution2D(64,(3,3)),input_shape=(None,None,None,3)))