代码之家  ›  专栏  ›  技术社区  ›  Phil

具有softmax的Keras时间分布密度不是每个时间步的标准化

  •  0
  • Phil  · 技术社区  · 6 年前

    这最终成为一个不同的问题,从一个问题

    我有一个非常简单的Keras模型,它接受时间序列数据。我想用一个循环层来预测一个相同维度的新序列,在每个时间步上用一个softmax来提供一个标准化的结果。

    x = GRU(256, return_sequences=True)(x)
    x = TimeDistributed(Dense(3, activation='softmax'))(x)
    

    假设输入是这样的:

    [
      [0.25, 0.25, 0.5],
      [0.3, 0.3, 0.4],
      [0.2, 0.7, 0.1],
      [0.1, 0.1, 0.8]
    ]
    

    [
      [0.15, 0.35, 0.5],
      [0.35, 0.35, 0.3],
      [0.1, 0.6, 0.3],
      [0.1, 0.2, 0.7]
    ]
    

    简单地说,我认为时间分布的思想是将稠密层应用于每个时间步,因此有效地将带有softmax激活的稠密层重复应用于每个时间步。但是我似乎得到了一个结果,它看起来像是在时间步长的输出矩阵中的所有元素中被标准化了。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Phil    6 年前

    问题似乎不是使用时间分布包装器处理Softmax,而是我的predictions函数中的一个错误,它是对整个矩阵求和,而不是逐行求和。