Моя модель не работает, так как точность и потери равны 0 - PullRequest
0 голосов
/ 03 февраля 2020

Я пытался спроектировать сеть LSTM с использованием керас, но точность равна 0,00, а значение потери равно 0,05, код, который я написал ниже.

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(1, activation = tf.nn.relu))



def percentage_difference(y_true, y_pred):
    return K.mean(abs(y_pred/y_true - 1) * 100)



model.compile(optimizer='sgd', 
             loss='mse',
             metrics = ['accuracy', percentage_difference])

model.fit(x_train, y_train.values, epochs = 10)


мой входной набор данных и набор тестовых данных были импортированы используя библиотеку pandas '. Количество функций - 5, а количество целей - 1. Все усилия будут оценены.

1 Ответ

1 голос
/ 03 февраля 2020

Из того, что я вижу, вы используете нейронную сеть , применяемую для решения проблемы регрессии .

Регрессия - это задача прогнозирования continuous значений путем изучения различных независимых функций.

Итак, в задаче регрессии у нас нет metrics, как accuracy, потому что это для classification ветвь supervised обучения.

Эквивалент accuracy для регрессии может составлять коэффициент детерминации или R^2 Score.

from keras import backend as K

def coeff_determination(y_true, y_pred):
    SS_res =  K.sum(K.square( y_true-y_pred ))
    SS_tot = K.sum(K.square( y_true - K.mean(y_true) ) )
    return ( 1 - SS_res/(SS_tot + K.epsilon()) )

model.compile(optimizer='sgd', 
         loss='mse',
         metrics = [coeff_determination])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...