Если вы хотите, чтобы ваши выходные данные вашей модели были такими, когда ваш model = keras.models.Model(...)
, ответ будет невозможен , потому что вывод, который вы предоставляете (который похож на пошаговый ответ) [1000] = > [0000] ") будет иметь градиент бесконечности на шаге и 0 в другой точке.
Что люди делают, так это создают модель, которая дает распределение по различным действиям и выбирает наибольшую вероятность в качестве прогнозируемого значения и использования потеря перекрестной энтропии для оптимизации модели. Например, из вашего вывода [1,0,0,0]
вы получите что-то вроде [0.9,0.01,0.01,0.08]
. Затем вы можете выбрать первый экземпляр как прогнозируемое значение. Это гарантирует, что ваша модель имеет градиент во всех точках.
Так что, если вы действительно хотите, чтобы ваша модель имела dim = 7
и 4 различных значения, вы можете создать выходной размер 28 = 7*4
при активации сигмоида, затем выберите первые 4 в качестве измерения 1 (возможно, используя что-то вроде np.argmax(output[0:4])
) и т. д.