Я пытаюсь обучить нейронную сеть прогнозировать рейтинги игроков в FIFA 18 по easports (рейтинги между 64-99). Я использую их базу данных игроков (https://easports.com/fifa/ultimate-team/api/fut/item?page=1), и я обработал данные в training_x, testing_x, training_y, testing_y. Каждый из обучающих образцов представляет собой массив numpy, содержащий 7 значений ... первые 6 являются различные характеристики игрока (стрельба, пас, дриблинг и т. д.) и последнее значение - это позиция игрока (которую я отобразил в диапазоне от 1 до 8, в зависимости от позиции), и каждое из значений тестирования представляет собой одно целое число между 64-99, представляющий рейтинг этого игрока.
Я пробовал много разных гиперпараметров, включая изменение функций активации на tanh и relu, и я пытался добавить пакетный слой нормализации после первого плотного слоя (я подумал, что это может быть полезно, так как одна из моих функций очень маленький, и другие функции находятся между 50-99), я играл с оптимизатором SGD (изменил скорость обучения, импульс, даже попытался изменить оптимизатор на Адама), попробовал различные функции потери, добавил / удалил выпадающие слои, и пробовал разные регуляризаторы для весов модели.
model = Sequential()
model.add(Dense(64, input_shape=(7,),
kernel_regularizer=regularizers.l2(0.01)))
//batch normalization?
model.add(Activation('sigmoid'))
model.add(Dense(64, kernel_regularizer=regularizers.l2(0.01),
activation='sigmoid'))
model.add(Dropout(0.3))
model.add(Dense(32, kernel_regularizer=regularizers.l2(0.01),
activation='sigmoid'))
model.add(Dense(1, activation='linear'))
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_absolute_error', metrics=['accuracy'],
optimizer=sgd)
model.fit(training_x, training_y, epochs=50, batch_size=128, shuffle=True)
Когда я тренирую модель, потеря всегда равна нан, а точность всегда равна 0, хотя я пытался настроить множество различных параметров. Тем не менее, если я удаляю последнюю функцию из моих данных, положение игроков и обновляю форму ввода первого плотного слоя, модель фактически «тренируется» и получается с точностью около 6% независимо от того, какие параметры я изменяю. В этом случае я обнаружил, что модель предсказывает рейтинг только 79. Что я делаю по своей сути неправильно?