В рамках проекта для моей учебы я хочу попытаться аппроксимировать функцию f:R^m -> R^n
с помощью нейронной сети Keras (к которой я совершенно новичок).Сеть, кажется, учится до некоторой (действительно неудовлетворительной) точки.Но прогнозы сети совсем не похожи на ожидаемые результаты.
У меня есть два numpy-массива, содержащих обучающие данные (m-мерный вход для функции) и обучающие метки (n-мерный ожидаемый выходной сигнал функции).Я использую их для обучения моей модели Keras (см. Ниже), которая, кажется, учится на предоставленных данных.
inputs = Input(shape=(m,))
hidden = Dense(100, activation='sigmoid')(inputs)
hidden = Dense(80, activation='sigmoid')(hidden)
outputs = Dense(n, activation='softmax')(hidden)
opti = tf.keras.optimizers.Adam(lr=0.001)
model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=opti,
loss='poisson',
metrics=['accuracy'])
model.fit(training_data, training_labels, verbose = 2, batch_size=32, epochs=30)
Когда я вызываю метод оценки для моей модели с набором тестовых данных иЗа набор тестовых меток я получаю очевидную точность более 50%.Тем не менее, когда я использую метод прогнозирования, прогнозы сети не похожи на ожидаемые результаты в малейшей степени.Например, первые десять записей ожидаемого результата:
[0, 0,08193582, 0,13141066, 0,13495408, 0,16852582, 0,2154705, 0,30517559, 0,32567417, 0,34073457, 0,37453226]
, тогда как первые десять записей прогнозируемых результатов:
[3.09514281e-09, 2.20849714e-03, 3.84095078e-03, 4.99367528e-03,
6.06226595e-03, 7.18442770e-03, 8.96730460e-03, 1.03423093e-02, 1.16029680e-02, 1.31887039e-02]
Имеет ли это какое-то отношение к используемым метрикам?Могут ли результаты быть нормализованы Керасом каким-то непрозрачным способом?Я только что использовал неправильную модель для решения проблемы, которую хочу решить?Что означает «точность» в любом случае?Заранее благодарю за помощь, я новичок в нейронных сетях и застрял с этой проблемой в течение нескольких дней.