【问题标题】:How to input the unknown size of time-step to TimeDistributed Keras layer如何将时间步长的未知大小输入到 TimeDistributed Keras 层
【发布时间】:2016-10-20 15:28:41
【问题描述】:

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

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

所以我想将它传递给时间步长 = 1..5(范围为 1 到 5)的某个 TimeDistributed 层,但我不知道它到底等于哪个。

我的下一层是这样的:

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。

【问题讨论】:

  • 我的答案正确吗?

标签: machine-learning neural-network tensorflow deep-learning keras


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以给一个可变的序列长度,像这样:

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

    但是现在您必须在时间预测时调整矢量的长度。

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2019-03-12
      • 1970-01-01
      相关资源
      最近更新 更多