Эта проблема оказалась не такой, как в вопросе
У меня есть очень простая модель 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.
Проще говоря, я думал, что идея TimeDistributed заключалась впримените слой Dense к каждому временному шагу, чтобы эффект Dense с активацией softmax применялся повторно для каждого временного шага.Но я, кажется, получаю результат, который выглядит так, как будто он нормализован по всем элементам выходной матрицы временных шагов.
Поскольку мне кажется, что я неправильно понимаю, есть ли способ получить результат Dense softmax для каждогошаг по времени (нормализованный к 1 на каждом шаге) без необходимости последовательного прогнозирования каждого временного шага?