我的输入状态为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)))
但是现在你必须调整向量的长度,当它在时间预测中变平或展开时