具有softmax的Keras时间分布密度未按时间步长标准化

具有softmax的Keras时间分布密度未按时间步长标准化,keras,Keras,这与问题中的问题不同 我有一个非常简单的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

这与问题中的问题不同

我有一个非常简单的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]
]
但我实际得到的结果是,每行中的元素之和实际上是四分之一(或行数的任何分数),而不是1

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


由于我似乎理解不正确,是否有一种方法可以获得每个时间步的密集softmax结果(在每个步骤中标准化为1),而不必依次预测每个时间步?

问题似乎不是使用时间分布包装器处理softmax,而是我的预测函数中的错误,这是对整个矩阵求和,而不是逐行求和