具有softmax的Keras时间分布密度未按时间步长标准化
这与问题中的问题不同 我有一个非常简单的Keras模型,它接受时间序列数据。我想用一个循环层来预测一个相同维度的新序列,在最后用一个softmax来提供每个时间步的标准化结果 这就是我的模特的样子具有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
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,而是我的预测函数中的错误,这是对整个矩阵求和,而不是逐行求和